File size: 1,788 Bytes
3ce1a40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""Package the verified native build without machine-specific asset paths."""
from pathlib import Path
import hashlib
import shutil
import zipfile
import argparse

root = Path(__file__).resolve().parents[1]
build = root / "unify/build-game"
parser = argparse.ArgumentParser()
parser.add_argument("--output", default="out/Snapkitty-Windows")
args = parser.parse_args()
out = (root / args.output).resolve()
if out.exists():
    raise SystemExit("Package directory already exists; choose a fresh output before packaging.")
required = [build / "unify_game.exe", build / "SDL2.dll"]
for item in required:
    if not item.is_file():
        raise SystemExit(f"Missing build artifact: {item}")
out.mkdir(parents=True)
for item in required:
    shutil.copy2(item, out / item.name)
shutil.copytree(root / "unify/game/assets", out / "assets", ignore=shutil.ignore_patterns("*.usav"))
shutil.copytree(root / "assets/snapkitty", out / "source-artwork")
shutil.copy2(build / "vendor/sdl2/SDL2-2.32.10/LICENSE.txt", out / "SDL2-LICENSE.txt")
shutil.copytree(root / "unify/third_party/lua/doc", out / "licenses/lua")
shutil.copy2(root / "docs/SNAPKITTY-GAME.md", out / "README.md")
(out / "Play.cmd").write_text('@echo off\ncd /d "%~dp0"\nunify_game.exe --assets "%~dp0assets"\n', encoding="ascii")
files = sorted(p for p in out.rglob("*") if p.is_file())
(out / "SHA256SUMS.txt").write_text("".join(hashlib.sha256(p.read_bytes()).hexdigest() + "  " + p.relative_to(out).as_posix() + "\n" for p in files), encoding="utf-8")
archive = out.with_suffix(".zip")
with zipfile.ZipFile(archive, "w", zipfile.ZIP_DEFLATED) as z:
    for p in sorted(out.rglob("*")):
        if p.is_file():
            z.write(p, p.relative_to(out.parent))
print(archive)
print(hashlib.sha256(archive.read_bytes()).hexdigest())