create-release.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python3
  2. import argparse
  3. from pathlib import Path
  4. import json
  5. import logging
  6. import re
  7. import subprocess
  8. ROOT = Path(__file__).resolve().parents[1]
  9. def determine_remote() -> str:
  10. text = (ROOT / "build-scripts/release-info.json").read_text()
  11. release_info = json.loads(text)
  12. if "remote" in release_info:
  13. return release_info["remote"]
  14. project_with_version = release_info["name"]
  15. project, _ = re.subn("([^a-zA-Z_])", "", project_with_version)
  16. return f"libsdl-org/{project}"
  17. def main():
  18. default_remote = determine_remote()
  19. parser = argparse.ArgumentParser(allow_abbrev=False)
  20. parser.add_argument("--ref", required=True, help=f"Name of branch or tag containing release.yml")
  21. parser.add_argument("--remote", "-R", default=default_remote, help=f"Remote repo (default={default_remote})")
  22. parser.add_argument("--commit", help=f"Input 'commit' of release.yml (default is the hash of the ref)")
  23. args = parser.parse_args()
  24. if args.commit is None:
  25. args.commit = subprocess.check_output(["git", "rev-parse", args.ref], cwd=ROOT, text=True).strip()
  26. print(f"Running release.yml workflow:")
  27. print(f" remote = {args.remote}")
  28. print(f" ref = {args.ref}")
  29. print(f" commit = {args.commit}")
  30. subprocess.check_call(["gh", "-R", args.remote, "workflow", "run", "release.yml", "--ref", args.ref, "-f", f"commit={args.commit}"], cwd=ROOT)
  31. if __name__ == "__main__":
  32. raise SystemExit(main())