import os
import sys

class ChangeSizeForRefresh():
    def __init__(self):
        startVersion, endVersion = self._get_sys_args()
        self.startVersion = startVersion
        self.endVersion = endVersion
        self.versionFile = "Version.txt"

    @staticmethod
    def _get_sys_args():
        startVersion = 56
        if len(sys.argv) > 1:
            startVersion = int(sys.argv[1])

        endVersion = startVersion
        if len(sys.argv) > 2:
            endVersion = int(sys.argv[2])
        return startVersion, endVersion

    def iterate_and_change_size(self):
        root_dir = "VersionCombined/"
        # 遍历root_dir下的所有文件夹，代表不同的精度
        for precision_dir in os.listdir(root_dir):
            precision_path = root_dir + precision_dir
            if os.path.isdir(precision_path):
                for i in range(self.startVersion, self.endVersion + 1):
                    if precision_dir.startswith("Android"):
                        version_file_path = precision_path + f"/LV2.{i}/"
                    else:
                        version_file_path = precision_path + f"/LV1.{i}/"

                    version_file_path = version_file_path + self.versionFile
                    if os.path.exists(version_file_path):
                        # print("find file:", version_file_path)
                        # 读取文件内容
                        dirty = False
                        with open(version_file_path, "r") as fr:
                            # 文件第四行内容形如1.58.0,1.58.21,84238.880,0  需要把第三个字段的小数点位的第三位加一对10取余，然后写回文件
                            lines = fr.readlines()
                            if len(lines) >= 5 and lines[4].__contains__("===") == False:
                                parts = lines[4].strip().split(",")
                                if len(parts) >= 3:
                                    size_parts = parts[2].split(".")
                                    if len(size_parts) >= 2:
                                        third_decimal = int(size_parts[1])
                                        num1 = (third_decimal % 10 + 1) % 10
                                        # num2 = (third_decimal // 10) *10
                                        # third_decimal = num2 + num1
                                        # size_parts[1][3] = str(num1)
                                        size_parts[1] = size_parts[1][:2] + str(num1)
                                        parts[2] = ".".join(size_parts)
                                        lines[4] = ",".join(parts) + "\n"
                                        dirty = True

                        if dirty:
                            # 写回文件
                            with open(version_file_path, "w") as fw:
                                fw.writelines(lines)
                            print(f"Updated size in {version_file_path} to {parts[2]}")

    def change_size(self):
        self.iterate_and_change_size()


if __name__ == '__main__':
    ChangeSizeForRefresh().change_size()