You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Modernize CLI with DevOps conventions
why: The previous CLI lacked modern DevOps tooling conventions, making it harder
to preview changes, introspect configuration, and integrate with CI/CD pipelines.
Users had no way to list repos or check status without syncing, and the import
command tried to do two unrelated things (add single repo vs scan filesystem).
what:
- BREAKING: Remove vcspull import command, split into add and discover
- BREAKING: Rename -c/--config → -f/--file across all commands
- NEW: vcspull list - List configured repositories with --tree, --json, --ndjson
- NEW: vcspull status - Check repository health (clean/dirty, ahead/behind)
- NEW: vcspull add - Add single repository to configuration
- NEW: vcspull discover - Scan filesystem for existing repositories
- NEW: --dry-run/-n for sync, add, discover commands
- NEW: --json/--ndjson structured output for automation
- NEW: -w short flag for --workspace-root (all 3 aliases supported)
- NEW: --color {auto,always,never} with NO_COLOR support
- NEW: Terraform-style dry-run plans for vcspull sync
- NEW: Async progress tracking for sync planning on TTYs
- Add comprehensive test coverage: 46 new tests (1,803 lines)
- Add complete documentation for all new commands
- Add semantic colors infrastructure (_colors.py)
- Add output formatting infrastructure (_output.py)
- Add workspace filtering helper (_workspaces.py)
Migration guide:
vcspull import NAME URL → vcspull add NAME URL
vcspull import --scan DIR → vcspull discover DIR
vcspull sync -c FILE → vcspull sync -f FILE
vcspull sync --workspace-root → vcspull sync -w PATH
Benefits:
- Better DX: Commands are clearer and more intuitive
- Safer: Dry-run mode prevents mistakes
- More discoverable: List and status commands for introspection
- Familiar: Matches patterns from Terraform, Cargo, Ruff, Biome
- CI/CD friendly: JSON/NDJSON output for scripting
- Type-safe: Full mypy coverage on all new code
Stats: 45 files changed, 6412 insertions(+), 1375 deletions(-)
Tests: 192/192 passing (146 original + 46 new)
refs: Aligns with modern DevOps CLI conventions
0 commit comments