Cross-export Windows release package on Linux
All checks were successful
Core validation / Linux core gate (push) Successful in 1m40s
Linux release build / Linux x64 artifact (push) Successful in 1m37s
Linux release build / Publish tagged Gitea release (push) Has been skipped

This commit is contained in:
gamer147
2026-08-03 21:59:52 -04:00
parent 60ac6fc64f
commit 02e9891baa
19 changed files with 690 additions and 32 deletions

View File

@@ -160,11 +160,21 @@ def file_matches(path: Path, expected_size: int, expected_hash: str) -> bool:
return digest.hexdigest() == expected_hash.lower()
def install_members(manifest_path: Path, destination: Path) -> list[Path]:
def install_members(
manifest_path: Path,
destination: Path,
selected_names: tuple[str, ...] | None = None,
) -> list[Path]:
with manifest_path.open(encoding="utf-8") as stream:
manifest = json.load(stream)
templates = manifest["templates"]
members = templates["members"]
if selected_names:
by_name = {member["install_name"]: member for member in members}
unknown = [name for name in selected_names if name not in by_name]
if unknown:
raise ValueError("template members were not found in the manifest: " + ", ".join(unknown))
members = [by_name[name] for name in selected_names]
destination.mkdir(parents=True, exist_ok=True)
installed = [destination / member["install_name"] for member in members]
@@ -211,8 +221,10 @@ def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--manifest", type=Path, required=True)
parser.add_argument("--destination", type=Path, required=True)
parser.add_argument("--member", action="append", dest="members")
args = parser.parse_args()
for installed in install_members(args.manifest.resolve(), args.destination.resolve()):
selected = tuple(args.members) if args.members else None
for installed in install_members(args.manifest.resolve(), args.destination.resolve(), selected):
print(installed)
return 0