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