#!/usr/bin/env nu # Thin entry for component commands. # Bypasses full dispatcher — loads only components/mod.nu + targeted lib_provisioning. # Mirrors the provisioning-taskserv.nu pattern for <1s startup. 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 components/mod.nu [component-list, component-show, component-status] def main [ ...args: string --workspace (-w): string = "" --mode: string = "" --ext --debug (-x) ]: nothing -> nothing { if $debug { $env.PROVISIONING_DEBUG = true } # Args come in as: ["component", "ls"] or ["ls", "postgresql"] depending on dispatch let rest = if (($args | length) > 0) and (($args | first) in ["component", "comp", "c", "cl"]) { $args | skip 1 } else { $args } let sub = ($rest | get 0? | default "list") let name = ($rest | get 1? | default "") # Workspace resolution: explicit flag > active env > empty (ext_only view) let ws = if ($workspace | is-not-empty) { $workspace } else { $env.PROVISIONING_KLOUD? | default "" } match $sub { "list" | "ls" | "l" => { component-list $mode $ws } "show" | "s" => { if ($name | is-empty) { print "Error: component show requires a name" print "Usage: prvng component show [--workspace ] [--ext]" return } component-show $name $ws $ext } "status" | "st" => { if ($name | is-empty) { print "Error: component status requires a name" print "Usage: prvng component status [--workspace ]" return } component-status $name $ws } "help" | "h" | "-h" | "--help" => { print "Component Management" print "====================" print "" print "Usage: prvng component [options]" print "" print "Subcommands:" print " list [--mode taskserv|cluster|container] [--workspace ] (alias: ls, l)" print " show [--workspace ] [--ext] (alias: s)" print " status [--workspace ] (alias: st)" print "" print "Examples:" print " prvng component list" print " prvng component list --mode cluster" print " prvng component show postgresql" print " prvng component status k0s --workspace libre-daoshi" } _ => { print $"Unknown component subcommand: ($sub)" print "Run: prvng component help" } } }