"""Build the declarative task review plugin without runtime dependencies.""" import argparse import hashlib import json from pathlib import Path import zipfile def main(): parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--output", type=Path, default=Path("artifacts/task-review")) args = parser.parse_args() package = Path(__file__).resolve().parents[1] / "plugins" / "task-review" manifest = json.loads((package / "plugin.json").read_text(encoding="utf-8")) args.output.mkdir(parents=True, exist_ok=True) target = args.output / f"task-review-{manifest['version']}.zip" with zipfile.ZipFile(target, "w", compression=zipfile.ZIP_DEFLATED) as archive: for name in ("plugin.json", "README.md", "LICENSE", "VERIFICATION.md", "RELEASE.md"): info = zipfile.ZipInfo(name, date_time=(2026, 10, 27, 0, 0, 0)) info.compress_type = zipfile.ZIP_DEFLATED info.external_attr = 0o100644 << 16 archive.writestr(info, (package / name).read_bytes()) digest = hashlib.sha256(target.read_bytes()).hexdigest() (args.output / "SHA256SUMS.txt").write_text(f"{digest} {target.name}\n", encoding="ascii") print(f"{target}\nSHA256 {digest}") if __name__ == "__main__": main()