#!/usr/bin/env python3 # -*- coding: utf-8 -*- r"""`pack.bat verify` 的入口:找最新的交付包(或用户给的路径)→ 交给 pack_dist.py --verify。 为什么要单独一个: `pack.bat verify` 不带参数时应该"自动找最新那个 zip",而批处理里做这个 (dir /b /o-d 之类) 既啰嗦又在中文路径上不稳 —— 放到 Python 里三行搞定,批处理只负责传参。 用法: python scripts/pack_verify_entry.py # 找 <安装根父目录>/guanlan-v*_dist_*.zip 里最新的 python scripts/pack_verify_entry.py """ from __future__ import annotations import pathlib import subprocess import sys ROOT = pathlib.Path(__file__).resolve().parents[1] def newest_zip() -> pathlib.Path | None: """找最新的交付包: 先看安装根的父目录(打包器默认输出处), 再看安装根自己。""" cands: list[pathlib.Path] = [] for d in (ROOT.parent, ROOT): if d.is_dir(): cands += [p for p in d.glob('guanlan-*.zip') if p.is_file()] cands += [p for p in d.glob('*guanlan*v*.zip') if p.is_file()] cands = sorted(set(cands), key=lambda p: p.stat().st_mtime, reverse=True) return cands[0] if cands else None def main() -> int: arg = sys.argv[1] if len(sys.argv) > 1 else '' zp = pathlib.Path(arg) if arg else newest_zip() if zp is None or not zp.is_file(): print('[X] 找不到交付包 zip。给一个路径: python scripts/pack_verify_entry.py ') return 2 print(f'[i] 开箱验证: {zp} ({zp.stat().st_size/1e6:.0f} MB)') if arg == '' and not str(zp).startswith(str(ROOT.parent)): pass return subprocess.call([sys.executable, str(ROOT / 'scripts' / 'pack_dist.py'), '--verify', str(zp)], cwd=str(ROOT)) if __name__ == '__main__': sys.exit(main())