-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.py
More file actions
70 lines (55 loc) · 1.84 KB
/
build.py
File metadata and controls
70 lines (55 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
"""PyInstaller ビルドスクリプト
ttp.exe を生成する。
使い方: uv run python build.py
"""
import PyInstaller.__main__
import shutil
import zipfile
from pathlib import Path
from ttp import __version__
def build() -> None:
dist_dir = Path("dist")
build_dir = Path("build")
# クリーンアップ
if dist_dir.exists():
shutil.rmtree(dist_dir)
if build_dir.exists():
shutil.rmtree(build_dir)
PyInstaller.__main__.run(
[
"src/ttp/__main__.py",
"--name=ttp",
"--noconsole",
"--add-data=resources;resources",
"--noconfirm",
"--clean",
]
)
out = dist_dir / "ttp"
# LICENSE を配布フォルダにコピー
shutil.copy2("LICENSE", out / "LICENSE")
# ログフォルダを準備 (空フォルダ + .gitkeep)
logs_dir = out / "logs"
logs_dir.mkdir(exist_ok=True)
# バージョン付き zip を生成
zip_name = f"ttp-{__version__}.zip"
zip_path = dist_dir / zip_name
print(f"\nzip 作成中: {zip_path}")
with zipfile.ZipFile(zip_path, "w", zipfile.ZIP_DEFLATED) as zf:
for file in out.rglob("*"):
arcname = f"ttp/{file.relative_to(out)}"
zf.write(file, arcname)
# logs/ は空フォルダなので明示的にディレクトリエントリを追加
zf.mkdir("ttp/logs/")
zip_size_mb = zip_path.stat().st_size / (1024 * 1024)
print()
print("=" * 50)
print(f"ビルド完了! (v{__version__})")
print(f"出力先: {out}")
print(f"配布zip: {zip_path} ({zip_size_mb:.1f} MB)")
print()
print("GitHub Release にアップロード:")
print(f" gh release create v{__version__} {zip_path} --title \"v{__version__}\" --notes \"TTP v{__version__}\"")
print("=" * 50)
if __name__ == "__main__":
build()