Initial upload: DevDash CLI with TUI dashboard
Some checks failed
CI / test (push) Has been cancelled

This commit is contained in:
2026-02-01 06:52:56 +00:00
parent 815b72d12c
commit 691693d0da

View File

@@ -0,0 +1,58 @@
from textual.app import ComposeResult
from textual.containers import Container, Vertical, Grid
from textual.screen import Screen
from textual.widgets import Static, Header, Footer, Label
from textual import work
from src.ui.components.panels import GitStatusPanel, CIStatusPanel, PullRequestsPanel, IssuesPanel
from src.api.github import GitHubClient
from src.git.status import get_git_status, is_git_repo
import os
class DashboardScreen(Screen):
CSS = """
DashboardScreen {
layout: grid;
grid-size: 2 2;
grid-rows: 1fr 1fr;
grid-columns: 1fr 1fr;
}
"""
def compose(self) -> ComposeResult:
yield Header(show_clock=True)
yield Container(
GitStatusPanel(id="git-status"),
CIStatusPanel(id="ci-status"),
PullRequestsPanel(id="prs"),
IssuesPanel(id="issues"),
id="dashboard-grid"
)
yield Footer()
def on_mount(self) -> None:
self.refresh_dashboard()
def on_key(self, event: events.Key) -> None:
if event.key == "r":
self.refresh_dashboard()
elif event.key == "q":
self.app.exit()
@work(exclusive=True)
async def refresh_dashboard(self) -> None:
try:
git_status = get_git_status()
self.query_one("#git-status", GitStatusPanel).update_status(git_status)
except Exception:
pass
repo = os.environ.get("DEVDASH_REPO", "")
if repo and "/" in repo:
owner, repo_name = repo.split("/", 1)
try:
client = GitHubClient()
prs = await client.get_pull_requests(owner, repo_name)
self.query_one("#prs", PullRequestsPanel).update_prs(prs)
except Exception:
pass