diff --git a/scripts/upload_assets.py b/scripts/upload_assets.py index 734fb58..d80df8e 100755 --- a/scripts/upload_assets.py +++ b/scripts/upload_assets.py @@ -2,7 +2,8 @@ """上传 release 资产到 gitcode(两步:取签名 URL → PUT 到 OBS)。 用法: upload_assets.py [file...] -不传 file 时上传该版本目录下所有 tar.gz/zip 与 SHA256SUMS。 +不传 file 时上传该版本目录下全部发布产物: + tar.gz / zip / deb / rpm / pkg / -setup.exe / SHA256SUMS """ import json import os @@ -38,6 +39,19 @@ def put_file(url: str, headers: dict, path: str) -> tuple[int, str]: return e.code, e.read().decode("utf-8", "replace")[:300] +# 发布产物后缀:免安装包 + 原生安装包。 +# 注意 -setup.exe 而不是裸 .exe,避开 bin/ 里的裸二进制。 +ARTIFACT_SUFFIXES = ( + ".tar.gz", ".zip", # 免安装 + ".deb", ".rpm", ".pkg", # linux / macOS 安装包 + "-setup.exe", # windows 安装器 +) + + +def is_artifact(name: str) -> bool: + return name == "SHA256SUMS" or name.endswith(ARTIFACT_SUFFIXES) + + def main() -> int: if len(sys.argv) < 3: print(__doc__) @@ -47,10 +61,7 @@ def main() -> int: os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "dist", "artifacts", version, ) - files = sys.argv[3:] or sorted( - f for f in os.listdir(outdir) - if f.endswith((".tar.gz", ".zip")) or f == "SHA256SUMS" - ) + files = sys.argv[3:] or sorted(f for f in os.listdir(outdir) if is_artifact(f)) failed = 0 for name in files: path = os.path.join(outdir, name)