94 lines
2.5 KiB
Plaintext
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)"
|
||
|
|
}
|
||
|
|
}
|