| 398 | |
| 399 | |
| 400 | def build_parser() -> argparse.ArgumentParser: |
| 401 | parser = argparse.ArgumentParser(description="OpenShell release tooling.") |
| 402 | sub = parser.add_subparsers(dest="command", required=True) |
| 403 | |
| 404 | get_version_parser = sub.add_parser("get-version", help="Print computed version.") |
| 405 | get_version_parser.add_argument( |
| 406 | "--python", action="store_true", help="Print Python version only." |
| 407 | ) |
| 408 | get_version_parser.add_argument( |
| 409 | "--cargo", action="store_true", help="Print Cargo version only." |
| 410 | ) |
| 411 | get_version_parser.add_argument( |
| 412 | "--docker", action="store_true", help="Print Docker version only." |
| 413 | ) |
| 414 | get_version_parser.add_argument( |
| 415 | "--deb", action="store_true", help="Print Debian package version only." |
| 416 | ) |
| 417 | get_version_parser.add_argument( |
| 418 | "--snap", action="store_true", help="Print Snap package version only." |
| 419 | ) |
| 420 | get_version_parser.add_argument( |
| 421 | "--rpm-version", action="store_true", help="Print RPM Version only." |
| 422 | ) |
| 423 | get_version_parser.add_argument( |
| 424 | "--rpm-release", action="store_true", help="Print RPM Release only." |
| 425 | ) |
| 426 | get_version_parser.add_argument( |
| 427 | "--json", action="store_true", help="Print all versions as JSON." |
| 428 | ) |
| 429 | |
| 430 | formula_parser = sub.add_parser( |
| 431 | "generate-homebrew-formula", |
| 432 | help="Generate the per-release Homebrew formula asset.", |
| 433 | ) |
| 434 | formula_parser.add_argument( |
| 435 | "--release-tag", |
| 436 | required=True, |
| 437 | help="GitHub release tag that owns the formula assets.", |
| 438 | ) |
| 439 | formula_parser.add_argument( |
| 440 | "--release-dir", |
| 441 | type=Path, |
| 442 | required=True, |
| 443 | help="Directory containing release artifacts and checksum files.", |
| 444 | ) |
| 445 | formula_parser.add_argument( |
| 446 | "--output", |
| 447 | type=Path, |
| 448 | required=True, |
| 449 | help="Path to write the generated Formula Ruby file.", |
| 450 | ) |
| 451 | |
| 452 | return parser |
| 453 | |
| 454 | |
| 455 | def main() -> None: |