chore(HDMI-Tool): package_release 平铺复制图案/说明到 release/ — 与 zip 内容一致, 文件夹开箱即用
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
组装 HDMI-Tool 发布包: exe + 附属资产 → 一个 zip(解压即用)
|
||||
组装 HDMI-Tool 发布包: exe + 附属资产 → 一个文件夹 + 一个 zip(解压即用)
|
||||
================================================================
|
||||
发布内容(zip 解压后根目录为 HDMI-Tool/, 与 exe 运行目录结构一致):
|
||||
先把 assets/ 的图案复制进 release/(与 exe 平铺), 使 release/ 本身就是
|
||||
可直接使用的完整文件夹; 再原样压成 zip —— 两者内容始终一致。
|
||||
|
||||
zip 解压后根目录为 HDMI-Tool/, 与 exe 运行目录结构一致:
|
||||
HDMI-Tool.exe 主程序(先运行 build_exe.py 打包)
|
||||
pattern_slots.json 预置自定义栏位(指向前 3 张 bw 图案)
|
||||
bw_*.png 640x360 黑白测试图 ×5(自定义栏位用)
|
||||
@@ -18,6 +21,7 @@
|
||||
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import zipfile
|
||||
@@ -54,22 +58,25 @@ def main():
|
||||
|
||||
# 依 pattern_slots.json 校验栏位引用的图片都在 assets/ 里
|
||||
slot_files = re.findall(r'"file":\s*"([^"]+)"', open(slots, encoding='utf-8').read())
|
||||
for f in slot_files:
|
||||
if not os.path.exists(os.path.join(ASSETS, f)):
|
||||
sys.exit(f'pattern_slots.json 引用的 {f} 不在 assets/ 中')
|
||||
|
||||
patterns = sorted(p for g in PATTERN_GLOBS
|
||||
for p in os.listdir(ASSETS)
|
||||
if re.fullmatch(g.replace('*', '.*'), p))
|
||||
for f in slot_files:
|
||||
if f not in patterns:
|
||||
sys.exit(f'pattern_slots.json 引用的 {f} 不在 assets/ 中')
|
||||
|
||||
# 图案复制进 release/, 与 exe 平铺 -> release/ 即完整可用的发布文件夹
|
||||
for p in patterns:
|
||||
shutil.copy2(os.path.join(ASSETS, p), os.path.join(RELEASE, p))
|
||||
shutil.copy2(readme, os.path.join(RELEASE, 'README.md'))
|
||||
|
||||
zip_name = f'HDMI-Tool-v{version}-win64.zip'
|
||||
zip_path = os.path.join(RELEASE, zip_name)
|
||||
with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as z:
|
||||
for src, arc in ([(exe, 'HDMI-Tool.exe'), (slots, 'pattern_slots.json'),
|
||||
(readme, 'README.md')]
|
||||
+ [(os.path.join(ASSETS, p), p) for p in patterns]):
|
||||
z.write(src, f'HDMI-Tool/{arc}')
|
||||
print(f'发布包: {zip_path} ({os.path.getsize(zip_path) / 1024 / 1024:.1f} MB)')
|
||||
print('内容: HDMI-Tool.exe, pattern_slots.json, README.md +', f'{len(patterns)} 张图案')
|
||||
for p in ['HDMI-Tool.exe', 'pattern_slots.json', 'README.md'] + patterns:
|
||||
z.write(os.path.join(RELEASE, p), f'HDMI-Tool/{p}')
|
||||
print(f'发布文件夹: {RELEASE} (exe+配置+说明+{len(patterns)} 张图案, 平铺即用)')
|
||||
print(f'发布包: {zip_path} ({os.path.getsize(zip_path) / 1024 / 1024:.1f} MB)')
|
||||
print('下一步上传: python publish_gitea.py', zip_name)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user