prvng_core/plugins/register-plugins.nu

94 lines
2.5 KiB
Plaintext
Raw Normal View History

#!/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)"
}
}