use ../workspace/state.nu * use ../workspace/sync.nu * use ../lib_provisioning/config/accessor.nu * use ../lib_provisioning/utils/interface.nu [_print] # Workspace provisioning state commands. export def "main state" [ subcmd?: string ...args --infra (-i): string = "" --settings (-s): string = "" --server: string = "" --taskserv: string = "" --kubeconfig: string = "" --skip-ssh --force (-f) --out: string = "" ] { let workspace_path = if ($env.PROVISIONING_WORKSPACE_PATH? | is-not-empty) { $env.PROVISIONING_WORKSPACE_PATH } else { $env.PWD } match ($subcmd | default "show") { "show" | "s" => { state-show $workspace_path --server $server }, "init" | "i" => { let curr_settings = (find_get_settings --infra $infra --settings $settings) state-init $workspace_path $curr_settings _print $"State initialized at (state-path $workspace_path)" }, "reset" | "r" => { if ($server | is-empty) or ($taskserv | is-empty) { error make { msg: "state reset requires --server --taskserv " } } state-node-reset $workspace_path $server $taskserv _print $"($server)/($taskserv) reset to pending" }, "migrate" | "m" => { state-migrate-from-json $workspace_path }, "sync" => { let curr_settings = (find_get_settings --infra $infra --settings $settings) state-sync $workspace_path $curr_settings --kubeconfig $kubeconfig --skip-ssh=$skip_ssh }, _ => { _print "Usage: provisioning state " _print "" _print " show [--server ] — display state table" _print " init [--infra ] — bootstrap state from settings" _print " reset --server --taskserv — reset node to pending" _print " migrate — migrate .json → .ncl" _print " sync [--infra ] [--kubeconfig ] — reconcile from APIs" }, } }