#!/usr/bin/env python3 """Delete a Gitea remote branch. Usage: delete_branch.py delete_branch.py --remote prgs feat/my-feature """ import os import sys import argparse # Auto-execute using the project's local virtual environment Python PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) venv_python = os.path.join(PROJECT_ROOT, "venv", "bin", "python3") if os.path.exists(venv_python) and sys.executable != venv_python: os.execv(venv_python, [venv_python] + sys.argv) from gitea_auth import get_auth_header, resolve_remote, add_remote_args, api_request, repo_api_url def main(argv=None): parser = argparse.ArgumentParser(description="Delete a Gitea remote branch.") add_remote_args(parser) parser.add_argument("branch", help="Remote branch name to delete.") args = parser.parse_args(argv) host, org, repo = resolve_remote(args) auth = get_auth_header(host) if not auth: print(f"Could not get credentials or token for {host}.", file=sys.stderr) return 1 # Encode the branch name in case it contains slashes, e.g. feat/my-branch import urllib.parse encoded_branch = urllib.parse.quote(args.branch, safe="") url = f"{repo_api_url(host, org, repo)}/branches/{encoded_branch}" try: api_request("DELETE", url, auth) print(f"Successfully deleted remote branch '{args.branch}'") return 0 except Exception as e: print(f"Error deleting branch '{args.branch}': {e}", file=sys.stderr) return 1 if __name__ == "__main__": sys.exit(main())