create-release.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/usr/bin/env python
  2. import argparse
  3. from pathlib import Path
  4. import logging
  5. import re
  6. import subprocess
  7. ROOT = Path(__file__).resolve().parents[1]
  8. def determine_project() -> str:
  9. text = (ROOT / "CMakeLists.txt").read_text()
  10. match = next(re.finditer(r"project\((?P<project>[a-zA-Z0-9_]+)\s+", text, flags=re.M))
  11. project_with_version = match["project"]
  12. project, _ = re.subn("([^a-zA-Z_])", "", project_with_version)
  13. return project
  14. def main():
  15. project = determine_project()
  16. default_remote = f"libsdl-org/{project}"
  17. current_commit = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=ROOT, text=True).strip()
  18. parser = argparse.ArgumentParser(allow_abbrev=False)
  19. parser.add_argument("--ref", required=True, help=f"Name of branch or tag containing release.yml")
  20. parser.add_argument("--remote", "-R", default=default_remote, help=f"Remote repo (default={default_remote})")
  21. parser.add_argument("--commit", default=current_commit, help=f"Commit (default={current_commit})")
  22. args = parser.parse_args()
  23. print(f"Running release.yml workflow:")
  24. print(f" commit = {args.commit}")
  25. print(f" remote = {args.remote}")
  26. subprocess.check_call(["gh", "-R", args.remote, "workflow", "run", "release.yml", "--ref", args.ref, "-f", f"commit={args.commit}"], cwd=ROOT)
  27. if __name__ == "__main__":
  28. raise SystemExit(main())