# Modular CLI Architecture (v3.2.0 - MAJOR REFACTORING) ## 🚀 CLI Refactoring Completed (2025-09-30) A comprehensive CLI refactoring transforming the monolithic 1,329-line script into a modular, maintainable architecture with domain-driven design. ## Architecture Improvements - **Main File Reduction**: 1,329 lines → 211 lines (84% reduction) - **Domain Handlers**: 7 focused modules (infrastructure, orchestration, development, workspace, configuration, utilities, generation) - **Code Duplication**: 50+ instances eliminated through centralized flag handling - **Command Registry**: 80+ shortcuts for improved user experience - **Bi-directional Help**: `provisioning help ws` = `provisioning ws help` - **Test Coverage**: Comprehensive test suite with 6 test groups ## Command Shortcuts Reference ### Infrastructure [Full docs: `provisioning help infra`] - `s` → `server` (create, delete, list, ssh, price) - `t`, `task` → `taskserv` (create, delete, list, generate, check-updates) - `cl` → `cluster` (create, delete, list) - `i`, `infras` → `infra` (list, validate) ### Orchestration [Full docs: `provisioning help orch`] - `wf`, `flow` → `workflow` (list, status, monitor, stats, cleanup) - `bat` → `batch` (submit, list, status, monitor, rollback, cancel, stats) - `orch` → `orchestrator` (start, stop, status, health, logs) ### Development [Full docs: `provisioning help dev`] - `mod` → `module` (discover, load, list, unload, sync-nickel) - `lyr` → `layer` (explain, show, test, stats) - `version` (check, show, updates, apply, taskserv) - `pack` (core, provider, list, clean) ### Workspace [Full docs: `provisioning help ws`] - `ws` → `workspace` (init, create, validate, info, list, migrate) - `tpl`, `tmpl` → `template` (list, types, show, apply, validate) ### Configuration [Full docs: `provisioning help config`] - `e` → `env` (show environment variables) - `val` → `validate` (validate configuration) - `st`, `config` → `setup` (setup wizard) - `show` (show configuration details) - `init` (initialize infrastructure) - `allenv` (show all config and environment) ### Utilities - `l`, `ls`, `list` → `list` (list resources) - `ssh` (SSH operations) - `sops` (edit encrypted files) - `cache` (cache management) - `providers` (provider operations) - `nu` (start Nushell session with provisioning library) - `qr` (QR code generation) - `nuinfo` (Nushell information) - `plugin`, `plugins` (plugin management) ### Generation [Full docs: `provisioning generate help`] - `g`, `gen` → `generate` (server, taskserv, cluster, infra, new) ### Special Commands - `c` → `create` (create resources) - `d` → `delete` (delete resources) - `u` → `update` (update resources) - `price`, `cost`, `costs` → `price` (show pricing) - `cst`, `csts` → `create-server-task` (create server with taskservs) ## Bi-directional Help System The help system works in both directions: ```bash # All these work identically: provisioning help workspace provisioning workspace help provisioning ws help provisioning help ws # Same for all categories: provisioning help infra = provisioning infra help provisioning help orch = provisioning orch help provisioning help dev = provisioning dev help provisioning help ws = provisioning ws help provisioning help plat = provisioning plat help provisioning help concept = provisioning concept help ```plaintext ## CLI Internal Architecture **File Structure:** ```plaintext provisioning/core/nulib/ ├── provisioning (211 lines) - Main entry point ├── main_provisioning/ │ ├── flags.nu (139 lines) - Centralized flag handling │ ├── dispatcher.nu (264 lines) - Command routing │ ├── help_system.nu - Categorized help │ └── commands/ - Domain-focused handlers │ ├── infrastructure.nu (117 lines) │ ├── orchestration.nu (64 lines) │ ├── development.nu (72 lines) │ ├── workspace.nu (56 lines) │ ├── generation.nu (78 lines) │ ├── utilities.nu (157 lines) │ └── configuration.nu (316 lines) ```plaintext **For Developers:** - **Adding commands**: Update appropriate domain handler in `commands/` - **Adding shortcuts**: Update command registry in `dispatcher.nu` - **Flag changes**: Modify centralized functions in `flags.nu` - **Testing**: Run `nu tests/test_provisioning_refactor.nu` See [ADR-006: CLI Refactoring](../architecture/adr/adr-006-provisioning-cli-refactoring.md) for complete refactoring details.