# Codebase Analysis Script Script to analyze the technology distribution in the provisioning codebase. ## Usage ### Basic Usage ```bash # From provisioning directory (analyzes current directory) cd provisioning nu tools/analyze-codebase.nu # From project root, analyze provisioning nu provisioning/tools/analyze-codebase.nu --path provisioning # Analyze any path nu provisioning/tools/analyze-codebase.nu --path /absolute/path/to/directory ``` ### Output Formats ```bash # Table format (default) - colored, visual bars nu provisioning/tools/analyze-codebase.nu --format table # JSON format - for programmatic use nu provisioning/tools/analyze-codebase.nu --format json # Markdown format - for documentation nu provisioning/tools/analyze-codebase.nu --format markdown ``` ### From provisioning directory ```bash cd provisioning nu tools/analyze-codebase.nu ``` ### Direct execution (if in PATH) ```bash # Make it globally available (one time) ln -sf "$(pwd)/provisioning/tools/analyze-codebase.nu" /usr/local/bin/analyze-codebase # Then run from anywhere analyze-codebase analyze-codebase --format json analyze-codebase --format markdown > CODEBASE_STATS.md ``` ## Output The script analyzes: - **Nushell** (.nu files) - **KCL** (.k files) - **Rust** (.rs files) - **Templates** (.j2, .tera files) Across these sections: - `core/` - CLI interface, core libraries - `extensions/` - Providers, taskservs, clusters - `platform/` - Rust services (orchestrator, control-center, etc.) - `templates/` - Template files - `kcl/` - KCL configuration schemas ## Example Output ### Table Format ``` ๐Ÿ“Š Analyzing Codebase: provisioning ๐Ÿ“‹ Lines of Code by Section โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ section โ”‚ nushell โ”‚ nushell_pctโ”‚ kcl โ”‚ kcl_pct โ”‚ rustโ”‚ rust_pct โ”‚ templates โ”‚ templates_pct โ”‚ total โ”‚ โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ core โ”‚ 53843 โ”‚ 99.87 โ”‚ 71 โ”‚ 0.13 โ”‚ 0 โ”‚ 0.00 โ”‚ 0 โ”‚ 0.00 โ”‚ 53914 โ”‚ โ”‚ โ”‚ extensions โ”‚ 10202 โ”‚ 43.21 โ”‚3946 โ”‚ 16.72 โ”‚ 0 โ”‚ 0.00 โ”‚ 9456 โ”‚ 40.05 โ”‚ 23604 โ”‚ โ”‚ โ”‚ platform โ”‚ 5759 โ”‚ 0.19 โ”‚ 0 โ”‚ 0.00 โ”‚2992107โ”‚ 99.81 โ”‚ 0 โ”‚ 0.00 โ”‚ 2997866 โ”‚ โ”‚ โ”‚ templates โ”‚ 4197 โ”‚ 72.11 โ”‚ 834 โ”‚ 14.33 โ”‚ 0 โ”‚ 0.00 โ”‚ 789 โ”‚ 13.56 โ”‚ 5820 โ”‚ โ”‚ โ”‚ kcl โ”‚ 0 โ”‚ 0.00 โ”‚5594 โ”‚ 100.00 โ”‚ 0 โ”‚ 0.00 โ”‚ 0 โ”‚ 0.00 โ”‚ 5594 โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ๐Ÿ“Š Overall Technology Distribution โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚ technology โ”‚ lines โ”‚ percentage โ”‚ visual โ”‚ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค โ”‚ Nushell โ”‚ 74001 โ”‚ 2.40 โ”‚ โ–ˆ โ”‚ โ”‚ KCL โ”‚ 10445 โ”‚ 0.34 โ”‚ โ”‚ โ”‚ Rust โ”‚ 2992107 โ”‚ 96.93 โ”‚ โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ โ”‚ โ”‚ Templates (Tera) โ”‚ 10245 โ”‚ 0.33 โ”‚ โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ ๐Ÿ“ˆ Total Lines of Code: 3086798 ``` ### JSON Format ```json { "sections": [...], "totals": { "nushell": 74001, "kcl": 10445, "rust": 2992107, "templates": 10245, "grand_total": 3086798 }, "percentages": { "nushell": 2.40, "kcl": 0.34, "rust": 96.93, "templates": 0.33 } } ``` ### Markdown Format ```markdown # Codebase Analysis ## Technology Distribution | Technology | Lines | Percentage | |------------|-------|------------| | Nushell | 74001 | 2.40% | | KCL | 10445 | 0.34% | | Rust | 2992107 | 96.93% | | Templates | 10245 | 0.33% | | **TOTAL** | **3086798** | **100%** | ``` ## Requirements - Nushell 0.107.1+ - Access to the provisioning directory ## What It Analyzes - โœ… All `.nu` files (Nushell scripts) - โœ… All `.k` files (KCL configuration) - โœ… All `.rs` files (Rust source) - โœ… All `.j2` and `.tera` files (Templates) ## Notes - The script recursively searches all subdirectories - Empty sections show 0 for all technologies - Percentages are calculated per section and overall - Visual bars are proportional to percentage (max 50 chars = 100%)