初始化程序
()
| 68 | |
| 69 | |
| 70 | def initializeMCSL2(): |
| 71 | """ |
| 72 | 初始化程序 |
| 73 | """ |
| 74 | |
| 75 | folders = [ |
| 76 | "Servers", |
| 77 | "Plugins", |
| 78 | "MCSL2", |
| 79 | "MCSL2/Downloads", |
| 80 | "MCSL2/Logs", |
| 81 | ] |
| 82 | for folder in folders: |
| 83 | if not osp.exists(folder): |
| 84 | makedirs(folder, exist_ok=True) |
| 85 | del folders |
| 86 | |
| 87 | if not osp.exists(r"./MCSL2/MCSL2_ServerList.json"): |
| 88 | globalServerList = {"MCSLServerList": []} |
| 89 | writeFile(r"./MCSL2/MCSL2_ServerList.json", '{\n "MCSLServerList": [\n\n ]\n}') |
| 90 | else: |
| 91 | globalServerList = loads(readFile(r"MCSL2/MCSL2_ServerList.json")) |
| 92 | |
| 93 | needs_save = False |
| 94 | |
| 95 | # scan Server folder to add missing server configs or update changed ones |
| 96 | serverFolder = r"./Servers" |
| 97 | existing_keys: Set[Tuple[Optional[str], Optional[str]]] = set() |
| 98 | for root, _, files in os.walk(serverFolder): |
| 99 | for file in files: |
| 100 | if file == "MCSL2ServerConfig.json": |
| 101 | with open(os.path.join(root, file), "r", encoding="utf-8") as f: |
| 102 | try: |
| 103 | singleConfig = loads(f.read()) |
| 104 | except Exception: |
| 105 | MCSL2Logger.error( |
| 106 | f"读取服务器配置文件失败: {os.path.join(root, file)},请检查文件格式是否正确。" # noqa: E501 |
| 107 | ) |
| 108 | continue |
| 109 | |
| 110 | key = (singleConfig.get("name"), singleConfig.get("core_file_name")) |
| 111 | existing_keys.add(key) |
| 112 | index = find_server_config_index(globalServerList["MCSLServerList"], singleConfig) |
| 113 | if index is None: |
| 114 | globalServerList["MCSLServerList"].append(singleConfig) |
| 115 | needs_save = True |
| 116 | MCSL2Logger.warning( |
| 117 | "扫描到不在全局配置中的服务器,已自动添加: {" |
| 118 | + ( |
| 119 | f'"name": "{singleConfig["name"]}", ' |
| 120 | f'"core_file_name": "{singleConfig["core_file_name"]}"' |
| 121 | ) |
| 122 | + "}" |
| 123 | ) |
| 124 | else: |
| 125 | existing = globalServerList["MCSLServerList"][index] |
| 126 | if not deep_compare_server_config(existing, singleConfig): |
| 127 | globalServerList["MCSLServerList"][index] = singleConfig |
no test coverage detected