update CLAUDE.md with rewrite plan documentation reference in docs/pland directory

This commit is contained in:
Michael Hoennig
2026-07-07 06:40:27 +02:00
parent 56208c061e
commit 38e080814e
15 changed files with 676 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
# Step 10: CLI Commands
Prerequisites: steps 04, 05, 06.
Read `README.md` and `00-legacy-analysis.md` first.
## Goal
CLI parity for interactive use without the server.
## Design
New picocli subcommands (Spring components in `commands/`, wired like the existing ones):
- `status` — print the latest build per branch as a table (branch, status, commit, time, duration); `--history` for all builds.
Reads `BuildResultRepository` directly; works while a server instance runs (file-based store, read-only).
- `build [<branch>]` — one-shot: fetch, checkout, build the given branch (default: current), print the log to the console, exit with the build's exit code.
Replaces legacy `--stay` and explicit branch arguments.
Support the legacy partial-name matching: resolve unique branch-name fragments, list candidates on ambiguity (legacy `resolve_branch_name`).
- `retry` — re-enqueue/build branches whose latest build failed (legacy `--retry`).
- Update the root command's subcommand list and `--help` texts.
Exit codes: 0 on success, 1 on build failure, 2 on usage/config errors (align with `CliRunner`'s `ExitCodeGenerator` contract).
## Out of Scope
- Talking to a running server over HTTP; direct file/executor access is sufficient for now.
- Shell completion.
## Tests
- Command unit tests with MockK-ed services (pattern of `InitCommandTest`).
- Branch fragment resolution: unique match, ambiguity handling, no match.
- Exit code assertions.
## Acceptance Criteria
- `./gradlew ktlintFormat` then `./gradlew build` is green.
- `java -jar ... status` and `java -jar ... build` work in this repository (manual smoke test; document in this file).