Jesús Pérez 85ce530733
feat: update provisioning core CLI, libraries, and plugins
Update core components including CLI, Nushell libraries, plugins system,
and utility scripts for the provisioning system.

CLI Updates:
- Command implementations
- CLI utilities and dispatching
- Help system improvements
- Command validation

Library Updates:
- Configuration management system
- Infrastructure validation
- Extension system improvements
- Secrets management
- Workspace operations
- Cache management system

Plugin System:
- Interactive form plugin (inquire)
- KCL integration plugin
- Performance optimization plugins
- Plugin registration system

Utilities:
- Build and distribution scripts
- Installation procedures
- Testing utilities
- Development tools

Documentation:
- Library module documentation
- Extension API guides
- Plugin usage guides
- Service management documentation

All changes are backward compatible. No breaking changes.
2025-12-11 21:57:05 +00:00

80 lines
2.3 KiB
Plaintext

# Lazy Configuration Loader
# Dynamically loads full loader.nu only when needed
# Provides fast-path for help and status commands
use ./loader-minimal.nu *
# Load full configuration loader (lazy-loaded on demand)
# Used by commands that actually need to parse config
def load-full-loader [] {
# Import the full loader only when needed
use ../config/loader.nu *
}
# Smart config loader that checks if full config is needed
# Returns minimal config for fast commands, full config for others
export def get-config-smart [
--command: string = "" # Current command being executed
--debug = false
--validate = true
--environment: string
] {
# Fast-path for help and status commands (don't need full config)
let is_fast_command = (
$command == "help" or
$command == "status" or
$command == "version" or
$command == "workspace" and ($command | str contains "list")
)
if $is_fast_command {
# Return minimal config for fast operations
return (get-minimal-config --debug=$debug --environment=$environment)
}
# For all other commands, load full configuration
load-full-loader
# This would call the full loader here, but since we're keeping loader.nu,
# just return a marker that full config is needed
"FULL_CONFIG_NEEDED"
}
# Get minimal configuration for fast operations
# Only includes workspace and environment detection
def get-minimal-config [
--debug = false
--environment: string
] {
let current_environment = if ($environment | is-not-empty) {
$environment
} else {
detect-current-environment
}
let active_workspace = (get-active-workspace)
# Return minimal config record
{
workspace: $active_workspace
environment: $current_environment
debug: $debug
paths: {
base: if ($active_workspace | is-not-empty) {
$active_workspace.path
} else {
""
}
}
}
}
# Check if a command needs full config loading
export def command-needs-full-config [command: string]: nothing -> bool {
let fast_commands = [
"help", "version", "status", "workspace list", "workspace active",
"plugin list", "env", "nu"
]
not ($command in $fast_commands or ($command | str contains "help"))
}