3 Commits

Author SHA1 Message Date
5c73d55d91 Run ruff format
All checks were successful
test / test (push) Successful in 34s
build / build (push) Successful in 2m2s
2024-10-09 22:29:14 +02:00
9e70fc25d4 Update README
Some checks failed
test / test (push) Successful in 33s
build / build (push) Has been cancelled
2024-10-09 22:27:27 +02:00
63ee619aef Merge branch '16-watchlist'
Some checks failed
test / test (push) Successful in 33s
build / build (push) Has been cancelled
2024-10-09 22:25:48 +02:00
4 changed files with 12 additions and 6 deletions

View File

@@ -24,7 +24,8 @@ Options:
--help Show this message and exit. --help Show this message and exit.
Commands: Commands:
pr Get merge status of pull request. pr Get merge status of pull request.
since Return the count of commits that has happened between the two refs. since Return the count of commits that has happened between the...
watchlist Manage watchlist.
``` ```

View File

@@ -65,12 +65,14 @@ def since(
return return
typer.echo(count) typer.echo(count)
@watchlist_app.command() @watchlist_app.command()
def list(watchlist: str|None = None, format: OutputFormat = OutputFormat.CONSOLE): def list(watchlist: str | None = None, format: OutputFormat = OutputFormat.CONSOLE):
"""List PRs in watchlist.""" """List PRs in watchlist."""
wl = Watchlist.from_file() wl = Watchlist.from_file()
wl.print(format=format) wl.print(format=format)
@watchlist_app.command() @watchlist_app.command()
def add(pr: int): def add(pr: int):
"""Add PR to watchlist.""" """Add PR to watchlist."""
@@ -80,6 +82,7 @@ def add(pr: int):
info = wl.pr(pr) info = wl.pr(pr)
print(f"Added #{info.pr}: {info.title} to watchlist.") print(f"Added #{info.pr}: {info.title} to watchlist.")
@watchlist_app.command() @watchlist_app.command()
def remove(pr: int): def remove(pr: int):
"""Remove PR from watchlist.""" """Remove PR from watchlist."""
@@ -88,6 +91,7 @@ def remove(pr: int):
wl.to_file() wl.to_file()
print(f"Removed #{pr} from watchlist.") print(f"Removed #{pr} from watchlist.")
def main(): def main():
app() app()

View File

@@ -7,6 +7,7 @@ from rich.console import Console
from nixprstatus.pr import get_pr from nixprstatus.pr import get_pr
class OutputFormat(str, Enum): class OutputFormat(str, Enum):
CONSOLE = "console" CONSOLE = "console"
JSON = "json" JSON = "json"
@@ -50,7 +51,7 @@ class Watchlist(BaseModel):
title = info["title"] title = info["title"]
self.prs.append(PRInfo(pr=pr, title=title)) self.prs.append(PRInfo(pr=pr, title=title))
def remove(self, pr: int): def remove(self, pr: int):
self.prs = [p for p in self.prs if p.pr != pr] self.prs = [p for p in self.prs if p.pr != pr]
@@ -64,7 +65,7 @@ class Watchlist(BaseModel):
print(self.model_dump_json()) print(self.model_dump_json())
case _: case _:
raise ValueError(f"Unknown format: {format}") raise ValueError(f"Unknown format: {format}")
def pr(self, pr: int) -> PRInfo | None: def pr(self, pr: int) -> PRInfo | None:
for p in self.prs: for p in self.prs:
if p.pr == pr: if p.pr == pr:

View File

@@ -31,4 +31,4 @@ class TestWatchlist(unittest.TestCase):
def test_get_pr(self): def test_get_pr(self):
w = Watchlist(prs=[PRInfo(pr=1, title="PR 1")]) w = Watchlist(prs=[PRInfo(pr=1, title="PR 1")])
self.assertEqual(w.pr(1), PRInfo(pr=1, title="PR 1")) self.assertEqual(w.pr(1), PRInfo(pr=1, title="PR 1"))
self.assertEqual(w.pr(2), None) self.assertEqual(w.pr(2), None)