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