|
9 | 9 | from datetime import datetime |
10 | 10 | from catfood.functions.print import 消息头 |
11 | 11 | from function.git.format import branchName |
12 | | -from function.files.manifest import 清单信息 |
13 | 12 | from function.maintain.config import 读取配置 |
14 | 13 | from catfood.functions.files import open_file |
15 | 14 | from function.files.manifest import 获取清单目录 |
| 15 | +from function.files.manifest import FormatManifest |
16 | 16 | from function.github.token import read_token, 这是谁的Token |
17 | 17 |
|
18 | 18 | def main(args: list[str]): |
@@ -257,69 +257,7 @@ def 修改版本(版本文件夹: str): |
257 | 257 | with open(清单文件路径, "r", encoding="utf-8") as f: |
258 | 258 | 清单文件内容 = f.read() |
259 | 259 |
|
260 | | - # =========================== 必经修改 ========================= |
261 | | - # 修改 ManifestVersion 和版本号 |
262 | | - for 清单中的旧清单版本号 in 清单信息.旧版本列表: |
263 | | - # 修改 ManifestVersion |
264 | | - if f"ManifestVersion: {清单中的旧清单版本号}" in 清单文件内容: |
265 | | - print(f" 替换 ManifestVersion: {清单中的旧清单版本号} -> {清单信息.最新版本}") |
266 | | - 写入日志(f" Replace ManifestVersion: {清单中的旧清单版本号} -> {清单信息.最新版本}") |
267 | | - 清单文件内容 = 清单文件内容.replace(f"ManifestVersion: {清单中的旧清单版本号}", f"ManifestVersion: {清单信息.最新版本}") |
268 | | - |
269 | | - # 修改 schema 引用,只替换版本号部分 |
270 | | - schema_line = f"{清单中的旧清单版本号}.schema.json" |
271 | | - if schema_line in 清单文件内容: |
272 | | - print(f" 替换 schema 引用: {清单中的旧清单版本号}.schema.json -> {清单信息.最新版本}.schema.json") |
273 | | - 写入日志(f" Replace schema references: {清单中的旧清单版本号}.schema.json -> {清单信息.最新版本}.schema.json") |
274 | | - 清单文件内容 = 清单文件内容.replace(f"{清单中的旧清单版本号}.schema.json", f"{清单信息.最新版本}.schema.json") |
275 | | - |
276 | | - # 替换工具注释 |
277 | | - ''' |
278 | | - 判断是否 `清单文件内容`为空 或 第一行以`#`开头 |
279 | | - 如果是,在`清单文件内容`第一行前面追加三行`# Modified with Sundry.`与`# yaml-language-server: $schema=...`与一个空行。 |
280 | | - 否则,`清单文件内容`有内容且第一行以`#`开头 |
281 | | - 再判断`清单文件内容`第一行是否以`# yaml-language-server`开头 |
282 | | - 如果是,在`清单文件内容`第一行前面追加一行`# Modified with Sundry.` |
283 | | - 如果不是,将`清单文件内容`第一行替换为`# Modified with Sundry.` |
284 | | - ''' |
285 | | - |
286 | | - # 按行分割文件内容 |
287 | | - lines = 清单文件内容.splitlines() |
288 | | - |
289 | | - if (not lines) or (not lines[0].startswith("#")): # https://github.com/DuckDuckStudio/Sundry/issues/28 |
290 | | - # 如果清单文件内容为空或第一行不是以#开头 |
291 | | - # 第一行前面追加三行 |
292 | | - lines.insert(0, "") |
293 | | - if 'installer' in file: # 安装程序清单 |
294 | | - lines.insert(0, f"# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.{清单信息.最新版本}.schema.json") |
295 | | - elif 'locale' in file: # 区域清单 |
296 | | - if 'defaultLocale' in 清单文件内容: # 默认区域清单 |
297 | | - lines.insert(0, f"# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.{清单信息.最新版本}.schema.json") |
298 | | - else: # 一般区域清单 |
299 | | - lines.insert(0, f"# yaml-language-server: $schema=https://aka.ms/winget-manifest.locale.{清单信息.最新版本}.schema.json") |
300 | | - else: # 版本清单 |
301 | | - lines.insert(0, f"# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.{清单信息.最新版本}.schema.json") |
302 | | - lines.insert(0, "# Modified with Sundry.") |
303 | | - # 否则第一行是#开头 |
304 | | - else: |
305 | | - # 判断第一行是否以# yaml-language-server开头 |
306 | | - if lines[0].startswith("# yaml-language-server"): |
307 | | - # 如果是,追加一行 |
308 | | - lines.insert(0, "# Modified with Sundry.") |
309 | | - else: |
310 | | - # 否则,替换第一行 |
311 | | - lines[0] = "# Modified with Sundry." |
312 | | - |
313 | | - # 将修改后的内容重新合并为一个字符串并赋值回清单文件内容 |
314 | | - 清单文件内容 = "\n".join(lines) |
315 | | - |
316 | | - # 确保最后有且只有一行空行 |
317 | | - if not 清单文件内容.endswith('\n'): # 如果最后没有换行符 |
318 | | - 清单文件内容 += '\n' # 添加一个换行符 |
319 | | - else: # 如果有了 |
320 | | - 清单文件内容 = 清单文件内容.rstrip('\n') + '\n' |
321 | | - # 管他几个先全移除 -> 添加一个换行符 |
322 | | - # .rstrip() 去除文本末尾的指定字符 |
| 260 | + 清单文件内容 = FormatManifest(清单文件内容, "# Modified with Sundry.") |
323 | 261 |
|
324 | 262 | # 写回修改后的文件内容 |
325 | 263 | with open(清单文件路径, "w", encoding="utf-8") as f: |
|
0 commit comments