prvng_core/plugins/register-plugins.nu
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

94 lines
2.5 KiB
Plaintext

#!/usr/bin/env nu
# Register provisioning plugins with Nushell
# Detect plugin directory
let plugin_dir = ($env.HOME + "/.local/share/nushell/plugins")
print $"Using plugin directory: ($plugin_dir)"
# Create plugin directory if it doesn't exist
if not ($plugin_dir | path exists) {
mkdir $plugin_dir
}
# Define plugins to register
let plugins = [
{
name: "nu_plugin_auth"
src: "provisioning/core/plugins/nushell-plugins/nu_plugin_auth/target/release/nu_plugin_auth"
description: "JWT authentication with system keyring"
}
{
name: "nu_plugin_kms"
src: "provisioning/core/plugins/nushell-plugins/nu_plugin_kms/target/release/nu_plugin_kms"
description: "Multi-backend KMS encryption"
}
{
name: "nu_plugin_orchestrator"
src: "provisioning/core/plugins/nushell-plugins/nu_plugin_orchestrator/target/release/nu_plugin_orchestrator"
description: "Local orchestrator operations (30x faster)"
}
]
# Copy plugins
print ""
print "Installing plugins..."
print "===================="
let result = (
$plugins
| each { |plugin|
let src = $plugin.src
let dst = ($plugin_dir + "/" + $plugin.name)
if not ($src | path exists) {
{
name: $plugin.name
success: false
message: $"Source not found at ($src)"
}
} else {
cp $src $dst
chmod +x $dst
if ($dst | path exists) {
{
name: $plugin.name
success: true
message: $"Installed to ($dst)"
}
} else {
{
name: $plugin.name
success: false
message: "Failed to copy"
}
}
}
}
)
# Print results
for item in $result {
let icon = if $item.success { "✓" } else { "✗" }
print $"($icon) ($item.name): ($item.message)"
}
let installed = ($result | where success == true | length)
let failed = ($result | where success == false | length)
print ""
print $"Results: ($installed) installed, ($failed) failed"
# Suggest next steps
if $installed > 0 {
print ""
print "Next steps:"
print "==========="
print "Run the following command in a new Nushell session:"
print ""
for plugin in $plugins {
let dst = ($plugin_dir + "/" + $plugin.name)
print $" plugin add ($dst)"
}
}