mirror of
https://gitee.com/xmz7891/ykxmz.git
synced 2026-10-18 12:30:44 +00:00
110 lines
3.5 KiB
Python
110 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
||
r"""把"电脑端发 zip"改成"电脑端发安装包 exe"。
|
||
|
||
用户要求:发行版里电脑端要给**安装包**,不是 zip。
|
||
|
||
改两个地方:
|
||
_build/gitee_release.py 上传列表里 agent zip -> setup exe
|
||
_build/release.py 打包之后多跑一步编译安装包
|
||
"""
|
||
from __future__ import annotations
|
||
|
||
import ast
|
||
import re
|
||
import sys
|
||
from pathlib import Path
|
||
|
||
ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote")
|
||
GITEE = ROOT / "_build" / "gitee_release.py"
|
||
RELEASE = ROOT / "_build" / "release.py"
|
||
|
||
# ---------- 1. gitee_release.py 的上传列表 ----------
|
||
|
||
G_OLD = ''' files = [
|
||
ROOT / "dist" / f"ykxmz-agent-{version}.zip",
|
||
ROOT / "dist" / f"ykxmz-server-{version}.zip",
|
||
ROOT / "dist" / f"ykxmz-watch-{version}.apk",
|
||
]'''
|
||
|
||
G_NEW = ''' # 电脑端给**安装包**(不是 zip 了,用户要求);
|
||
# 服务器端给 zip;手表端直接给 APK。
|
||
files = [
|
||
ROOT / "dist" / f"ykxmz-setup-{version}.exe",
|
||
ROOT / "dist" / f"ykxmz-server-{version}.zip",
|
||
ROOT / "dist" / f"ykxmz-watch-{version}.apk",
|
||
]'''
|
||
|
||
# ---------- 2. release.py 多编译一步安装包 ----------
|
||
|
||
R_OLD = ''' # ---- 3. 打包 ----
|
||
step(3, "打三个成品")
|
||
proc = sh([sys.executable, "_build/package_remote.py"])
|
||
print(proc.stdout[-1400:])
|
||
if proc.returncode != 0:
|
||
return 1'''
|
||
|
||
R_NEW = ''' # ---- 3. 打成品 ----
|
||
step(3, "打成品(安装包 + 服务器 zip + APK)")
|
||
proc = sh([sys.executable, "_build/package_remote.py"])
|
||
print(proc.stdout[-1200:])
|
||
if proc.returncode != 0:
|
||
return 1
|
||
|
||
# 电脑端对外发的是**安装包**,不是 zip
|
||
proc = sh([sys.executable, "installer/build_installer.py"], timeout=1800)
|
||
for line in (proc.stdout or "").splitlines():
|
||
if "安装包" in line or "失败" in line:
|
||
print(f" {line.strip()}")
|
||
if proc.returncode != 0:
|
||
print((proc.stdout or "")[-1200:])
|
||
return 1'''
|
||
|
||
R_OLD2 = ''' step(3, "打三个成品")'''
|
||
R_NEW2 = ''' step(3, "打成品(安装包 + 服务器 zip + APK)")'''
|
||
|
||
|
||
def patch(path: Path, pairs, label: str) -> bool:
|
||
text = path.read_text(encoding="utf-8")
|
||
changed = False
|
||
for old, new in pairs:
|
||
if new.strip() and new in text:
|
||
continue
|
||
if old not in text:
|
||
print(f" [提示] {path.name}: 找不到「{label}」的锚点(可能已改)")
|
||
continue
|
||
text = text.replace(old, new, 1)
|
||
changed = True
|
||
if changed:
|
||
path.write_text(text, encoding="utf-8", newline="\n")
|
||
print(f" {path.name}: 已更新")
|
||
else:
|
||
print(f" {path.name}: 无需改动")
|
||
try:
|
||
ast.parse(path.read_text(encoding="utf-8"))
|
||
except SyntaxError as exc:
|
||
print(f" [失败] {path.name} 语法错误: 行 {exc.lineno}: {exc.msg}")
|
||
return False
|
||
return True
|
||
|
||
|
||
def main() -> int:
|
||
ok = True
|
||
if not patch(GITEE, [(G_OLD, G_NEW)], "上传列表"):
|
||
ok = False
|
||
if not patch(RELEASE, [(R_OLD, R_NEW)], "打包步骤"):
|
||
ok = False
|
||
|
||
print()
|
||
print(" 复核:")
|
||
g = GITEE.read_text(encoding="utf-8")
|
||
r = RELEASE.read_text(encoding="utf-8")
|
||
print(f" gitee_release.py 用 setup exe: "
|
||
f"{'✓' if 'ykxmz-setup-{version}.exe' in g else '✗'}")
|
||
print(f" release.py 会编译安装包: "
|
||
f"{'✓' if 'build_installer.py' in r else '✗'}")
|
||
return 0 if ok else 1
|
||
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(main())
|