feat(repos): add repos status command#3031
Conversation
|
🤖 Review · |
PR Summary by Qodofeat(repos): add
AI Description
Diagram
High-Level Assessment
Files changed (4)
|
Site previewPreview: https://63f64a0d-site.fullsend-ai.workers.dev Commit: |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Code Review by Qodo
1.
|
928f880 to
4e61cee
Compare
|
🤖 Review · |
4e61cee to
4747e82
Compare
|
🤖 Finished Review · ✅ Success · Started 12:02 AM UTC · Completed 12:28 AM UTC |
ReviewVerdict: approve Re-review after rebase (prior review SHA 4f37867). The PR code is unchanged — single commit rebased onto newer main. All six review dimensions confirm the implementation is sound.
FindingsLow
Previous runReviewVerdict: approve The prior review's medium finding ( The core implementation (
FindingsLow
Previous runReviewVerdict: approve The prior review's medium finding ( The core implementation (
FindingsLow
Previous run (2)ReviewFindingsMedium
Low
Previous run (3)ReviewFindingsLow
Labels: PR adds new Go CLI command group for per-repo installation management. Previous run (4)ReviewFindingsLow
Previous run (5)ReviewFindingsMedium
Low
Labels: PR adds new Go CLI command group for per-repo installation management. Previous run (6)ReviewFindingsMedium
Low
Previous run (7)ReviewFindingsLow
Labels: PR adds new Go CLI command group for per-repo installation management. Previous run (8)ReviewFindingsLow
Previous run (9)ReviewFindingsMedium
Low
Labels: PR adds new Go CLI command group for per-repo installation management. |
4747e82 to
dfbe3ec
Compare
|
🤖 Finished Review · ✅ Success · Started 12:38 AM UTC · Completed 12:49 AM UTC |
dfbe3ec to
b369161
Compare
|
🤖 Finished Review · ✅ Success · Started 12:54 AM UTC · Completed 1:05 AM UTC |
b369161 to
30688d2
Compare
|
🤖 Review · |
30688d2 to
4f37867
Compare
|
🤖 Finished Review · ✅ Success · Started 10:38 AM UTC · Completed 10:48 AM UTC |
Add `fullsend repos status` — a read-only command that compares a declarative repos.yaml manifest against actual forge state, reporting installation status and configuration drift for each repo. - CLI: --manifest/-f, --json, --repo (repeatable filter), --concurrency - Parallel API calls with bounded semaphore and context cancellation - Table and JSON output formats; non-zero exit on drift/errors - 90%+ test coverage on repos package, 23 status tests + 17 CLI tests - Documentation: docs/cli/repos.md, updates to README, cli-internals, and operations guide Signed-off-by: Greg Allen <greg@fullsend.ai> Signed-off-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Greg Allen <gallen@redhat.com>
4f37867 to
f4ff555
Compare
|
🤖 Finished Review · ✅ Success · Started 1:26 PM UTC · Completed 1:36 PM UTC |
rh-hemartin
left a comment
There was a problem hiding this comment.
Not sure why config.ts was changed, looks mostly style, maybe pre-commit changed it? Well, LGTM anyway.
|
🤖 Finished Retro · ✅ Success · Started 12:15 PM UTC · Completed 12:23 PM UTC |
|
PR #3031 added a Proposals filed
|
Summary
fullsend repos statuscommand that compares arepos.yamlmanifest against actual forge statefullsend repossubcommand group into the CLI root, establishing the command structure for future repos management commands (ADR 0057)FULLSEND_MINT_URL,FULLSEND_GCP_REGION, andfullsend_ref, and both table and JSON output formatsContext
This is PR 4 from the repos management plan, implementing read-only status discovery. It depends on PRs #3002 (manifest parser) and #3001 (forge interface), both already merged.
Files changed
internal/repos/status.goStatus(),checkRepoStatus(),extractWorkflowRef(),filterRepos()internal/repos/status_test.gointernal/cli/repos.goreposcommand group +repos statussubcommandinternal/cli/root.gonewReposCmd()into rootFlags
--manifest/-f(defaultrepos.yaml): path or URL to manifest file--json: emit JSON output instead of table--repo(repeatable): filter to specific repos--concurrency(default 8): max parallel API callsExit codes
0: all repos match manifest1: drift, missing repos, or errors detectedTest plan
go test ./internal/repos/ -run TestStatus)status.go(all functions)go vetclean on both packagesTestReposEnableCmd_*,TestReposDisableCmd_*) unaffected🤖 Generated with Claude Code