Add option for checking specific branch
This commit is contained in:
		| @@ -1,5 +1,6 @@ | |||||||
| import typer | import typer | ||||||
| import requests | import requests | ||||||
|  | from typing import Annotated | ||||||
| from rich.console import Console | from rich.console import Console | ||||||
|  |  | ||||||
| app = typer.Typer() | app = typer.Typer() | ||||||
| @@ -11,10 +12,25 @@ DEFAULT_HEADERS = { | |||||||
| BRANCHES = ["nixos-unstable-small", "nixos-unstable", "nixos-24.05"] | BRANCHES = ["nixos-unstable-small", "nixos-unstable", "nixos-24.05"] | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def commit_in_branch(commit_sha: str, branch: str) -> bool: | ||||||
|  |     url = f"https://api.github.com/repos/NixOS/nixpkgs/compare/{branch}...{commit_sha}" | ||||||
|  |     commit_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||||
|  |     commit_response.raise_for_status() | ||||||
|  |     status = commit_response.json().get("status") | ||||||
|  |  | ||||||
|  |     if status in ["identical", "behind"]: | ||||||
|  |         return True | ||||||
|  |     return False | ||||||
|  |  | ||||||
|  |  | ||||||
| @app.command() | @app.command() | ||||||
| def pr(pr: str): | def pr( | ||||||
|  |     pr: str, | ||||||
|  |     branch: Annotated[str | None, typer.Option(help="Check specific branch")] = None, | ||||||
|  | ): | ||||||
|     """Get status of pull request""" |     """Get status of pull request""" | ||||||
|     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" |     url = f"https://api.github.com/repos/NixOS/nixpkgs/pulls/{pr}" | ||||||
|  |     typer.echo(f"branch {branch}") | ||||||
|  |  | ||||||
|     pr_response = requests.get(url, headers=DEFAULT_HEADERS) |     pr_response = requests.get(url, headers=DEFAULT_HEADERS) | ||||||
|     pr_response.raise_for_status() |     pr_response.raise_for_status() | ||||||
| @@ -23,7 +39,24 @@ def pr(pr: str): | |||||||
|  |  | ||||||
|     console = Console() |     console = Console() | ||||||
|  |  | ||||||
|     if pr_data["merged"] is False: |     merged = pr_data["merged"] | ||||||
|  |  | ||||||
|  |     if branch and not merged: | ||||||
|  |         console.print(f":x: {branch}") | ||||||
|  |         return | ||||||
|  |  | ||||||
|  |     commit_sha = pr_data.get("merge_commit_sha") | ||||||
|  |  | ||||||
|  |     # Check only specified branch | ||||||
|  |     if branch: | ||||||
|  |         in_branch = commit_in_branch(commit_sha, branch) | ||||||
|  |         if in_branch: | ||||||
|  |             console.print(f":white_check_mark: {branch}", highlight=False) | ||||||
|  |         else: | ||||||
|  |             console.print(f":x: {branch}", highlight=False) | ||||||
|  |         return | ||||||
|  |  | ||||||
|  |     if not merged: | ||||||
|         console.print(":x: master", highlight=False) |         console.print(":x: master", highlight=False) | ||||||
|         for branch in BRANCHES: |         for branch in BRANCHES: | ||||||
|             console.print(f":x: {branch}", highlight=False) |             console.print(f":x: {branch}", highlight=False) | ||||||
| @@ -31,18 +64,12 @@ def pr(pr: str): | |||||||
|  |  | ||||||
|     console.print(":white_check_mark: master", highlight=False) |     console.print(":white_check_mark: master", highlight=False) | ||||||
|  |  | ||||||
|     commit_sha = pr_data["merge_commit_sha"] |     for b in BRANCHES: | ||||||
|  |         in_branch = commit_in_branch(commit_sha, b) | ||||||
|     for branch in BRANCHES: |         if in_branch: | ||||||
|         url = f"https://api.github.com/repos/NixOS/nixpkgs/compare/{branch}...{commit_sha}" |             console.print(f":white_check_mark: {b}", highlight=False) | ||||||
|         commit_response = requests.get(url, headers=DEFAULT_HEADERS) |  | ||||||
|         commit_response.raise_for_status() |  | ||||||
|         status = commit_response.json().get("status") |  | ||||||
|  |  | ||||||
|         if status in ["identical", "behind"]: |  | ||||||
|             console.print(f":white_check_mark: {branch}", highlight=False) |  | ||||||
|         else: |         else: | ||||||
|             console.print(f":x: {branch}", highlight=False) |             console.print(f":x: {b}", highlight=False) | ||||||
|  |  | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user