Add option for checking specific branch
This commit is contained in:
parent
68f7c3ab43
commit
046775c0f7
@ -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():
|
||||||
|
Loading…
Reference in New Issue
Block a user