#!/usr/bin/env nu # Thin entry for extension commands. Loads only extensions.nu. export-env { let lib_dirs_raw = ($env.NU_LIB_DIRS? | default "") let current_lib_dirs = if ($lib_dirs_raw | type) == "string" { if ($lib_dirs_raw | is-empty) { [] } else { ($lib_dirs_raw | split row ":") } } else { $lib_dirs_raw } let dynamic = ($env.PROVISIONING? | default "" | path join "core" "nulib") $env.NU_LIB_DIRS = ([ "/opt/provisioning/core/nulib" "/usr/local/provisioning/core/nulib" ] | append $current_lib_dirs | append (if ($dynamic | is-not-empty) { [$dynamic] } else { [] })) } use main_provisioning/extensions.nu * use components/mod.nu [component-list, component-show] def main [ ...args: string --workspace (-w): string = "" --mode: string = "" --debug (-x) ]: nothing -> nothing { if $debug { $env.PROVISIONING_DEBUG = true } let rest = if (($args | length) > 0) and (($args | first) in ["extension", "ext", "e"]) { $args | skip 1 } else { $args } let sub = ($rest | get 0? | default "list") let name = ($rest | get 1? | default "") match $sub { "list" | "ls" | "l" => { # Extension catalog = components/mod.nu with no workspace context (ext_only) component-list $mode "" } "show" | "s" => { if ($name | is-empty) { print "Error: extension show requires a name" return } component-show $name "" true } "capabilities" | "caps" => { main extensions capabilities } "graph" | "g" => { main extensions graph } "init" => { main extensions init } "help" | "h" | "-h" | "--help" => { print "Extension Catalog" print "=================" print "" print "Usage: prvng extension " print "" print "Subcommands:" print " list [--mode taskserv|cluster|container] (alias: ls, l)" print " show (alias: s)" print " capabilities (alias: caps)" print " graph (alias: g)" print " init" } _ => { print $"Unknown extension subcommand: ($sub)" print "Run: prvng extension help" } } }