(self)
| 168 | self.exists_error_msg = exists_error_msg |
| 169 | |
| 170 | def run(self): |
| 171 | server_name = self.server_config["name"] |
| 172 | folder_created = False |
| 173 | global_config_written = False |
| 174 | |
| 175 | # 新建文件夹 |
| 176 | try: |
| 177 | mkdir(f"./Servers/{server_name}") |
| 178 | folder_created = True |
| 179 | except FileExistsError: |
| 180 | self.failed.emit(self.exists_error_msg) |
| 181 | return |
| 182 | except Exception as e: |
| 183 | self.failed.emit(self.exit1_msg + f"\n{e}") |
| 184 | return |
| 185 | |
| 186 | # 写入全局配置 |
| 187 | try: |
| 188 | global_server_list = loads(readFile(r"MCSL2/MCSL2_ServerList.json")) |
| 189 | global_server_list["MCSLServerList"].append(self.server_config) |
| 190 | writeFile(r"MCSL2/MCSL2_ServerList.json", dumps(global_server_list, indent=4)) |
| 191 | global_config_written = True |
| 192 | except Exception as e: |
| 193 | # 回滚:删除已创建的文件夹 |
| 194 | if folder_created: |
| 195 | try: |
| 196 | rmtree(f"./Servers/{server_name}") |
| 197 | except Exception: |
| 198 | pass |
| 199 | self.failed.emit(self.exit1_msg + f"\n{e}") |
| 200 | return |
| 201 | |
| 202 | # 写入单独配置 |
| 203 | try: |
| 204 | if not self.only_save_global: |
| 205 | writeFile( |
| 206 | f"./Servers/{server_name}/MCSL2ServerConfig.json", |
| 207 | dumps(self.server_config, indent=4), |
| 208 | ) |
| 209 | except Exception as e: |
| 210 | # 回滚:删除全局配置和文件夹 |
| 211 | if global_config_written: |
| 212 | try: |
| 213 | global_server_list = loads(readFile(r"MCSL2/MCSL2_ServerList.json")) |
| 214 | # 找到刚添加的配置并删除 |
| 215 | for i, srv in enumerate(global_server_list["MCSLServerList"]): |
| 216 | if srv["name"] == server_name: |
| 217 | global_server_list["MCSLServerList"].pop(i) |
| 218 | break |
| 219 | writeFile(r"MCSL2/MCSL2_ServerList.json", dumps(global_server_list, indent=4)) |
| 220 | except Exception: |
| 221 | pass |
| 222 | if folder_created: |
| 223 | try: |
| 224 | rmtree(f"./Servers/{server_name}") |
| 225 | except Exception: |
| 226 | pass |
| 227 | self.failed.emit(self.exit1_msg + f"\n{e}") |
nothing calls this directly
no test coverage detected