Compare commits
	
		
			3 Commits
		
	
	
		
			68f7c3ab43
			...
			e00bcba5f1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| e00bcba5f1 | |||
| 29abf18b46 | |||
| 046775c0f7 | 
@@ -13,3 +13,7 @@ $ nixprstatus 345501
 | 
				
			|||||||
❌ nixos-24.05
 | 
					❌ nixos-24.05
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## TODO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* Support backported commits
 | 
				
			||||||
 | 
					* JSON output
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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():
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
[tool.poetry]
 | 
					[tool.poetry]
 | 
				
			||||||
name = "nixprstatus"
 | 
					name = "nixprstatus"
 | 
				
			||||||
version = "0.1.0"
 | 
					version = "0.1.1"
 | 
				
			||||||
description = "Nixpkgs PR status checker"
 | 
					description = "Nixpkgs PR status checker"
 | 
				
			||||||
authors = ["Torjus Håkestad <torjus@usit.uio.no>"]
 | 
					authors = ["Torjus Håkestad <torjus@usit.uio.no>"]
 | 
				
			||||||
license = "MIT"
 | 
					license = "MIT"
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user