Add Iron Coast II Black Tide eight-mission campaign
This commit is contained in:
1 parent
a08b932beb
commit
71cb7cdba3
4492 files changed
+164577
-45
No files matched your search
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Reproduce isolated Stage 2 package validation and public indexed/audio review."""
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--data", type=Path)
|
||||
parser.add_argument("--output", type=Path, required=True)
|
||||
args = parser.parse_args()
|
||||
root = Path(__file__).resolve().parents[3]
|
||||
data = (args.data or root / "data").resolve()
|
||||
output = args.output.resolve()
|
||||
output.mkdir(parents=True, exist_ok=True)
|
||||
packages = ["iron_coast_railburst", "iron_coast_depth_charge"]
|
||||
subprocess.run(["cargo", "build", "--locked", "--no-default-features", "--lib", "--bin", "raptor-rust"], cwd=root, check=True)
|
||||
deps = root / "target/debug/deps"
|
||||
suffix = ".exe" if os.name == "nt" else ""
|
||||
executable = output / ("native_review" + suffix)
|
||||
command = ["rustc", "--edition=2024", str(Path(__file__).with_name("native_review.rs")), "-L", f"dependency={deps}", "-o", str(executable)]
|
||||
libraries = {}
|
||||
for name in ["raptor_replica", "image", "serde_json"]:
|
||||
library = root / "target/debug/libraptor_replica.rlib" if name == "raptor_replica" else max(deps.glob(f"lib{name}-*.rlib"), key=lambda path: path.stat().st_mtime_ns)
|
||||
command += ["--extern", f"{name}={library}"]
|
||||
libraries[name] = {"path": str(library), "sha256": hashlib.sha256(library.read_bytes()).hexdigest()}
|
||||
subprocess.run(command, cwd=root, check=True)
|
||||
cases = []
|
||||
with tempfile.TemporaryDirectory(prefix="iron-coast-stage2-review-") as folder:
|
||||
frozen = Path(folder)
|
||||
for package in packages:
|
||||
shutil.copytree(root / "mods" / package, frozen / package)
|
||||
for selected in [[packages[0]], [packages[1]], packages]:
|
||||
result = subprocess.run([str(root / ("target/debug/raptor-rust" + suffix)), "--data", str(data), "--mods", str(frozen), "--validate-mods", ",".join(selected)], cwd=root, check=True, capture_output=True, text=True)
|
||||
print(result.stdout, end="")
|
||||
cases.append({"enabled": selected, "stdout": result.stdout.strip(), "stderr": result.stderr.strip(), "exit_code": result.returncode})
|
||||
subprocess.run([str(executable), str(data), str(frozen), str(output)], cwd=root, check=True)
|
||||
(output / "build-bindings.json").write_text(json.dumps({"libraries": libraries, "review_source_sha256": hashlib.sha256(Path(__file__).with_name("native_review.rs").read_bytes()).hexdigest(), "validation_cases": cases, "scope": "Frozen package copies; public asset, indexed Canvas and audio APIs; no live desktop or pilot mutations."}, indent=2) + "\n")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user