#!/usr/bin/env nu # Thin entry for workflow commands. Loads only workflow.nu + targeted lib_provisioning. 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 orchestration/workflow.nu * def main [ ...args: string --workspace (-w): string = "" --infra (-i): string = "" --dry-run (-n) --notitles --debug (-x) ]: nothing -> nothing { if $debug { $env.PROVISIONING_DEBUG = true } let rest = if (($args | length) > 0) and (($args | first) in ["workflow", "wflow", "w"]) { $args | skip 1 } else { $args } let sub = ($rest | get 0? | default "") let arg1 = ($rest | get 1? | default "") let help_text = { print "Workflow Management" print "===================" print "" print "Usage: prvng workflow [options]" print "" print "Subcommands:" print " list List WorkflowDef entries in the workspace (alias: ls, l)" print " status Show workflow status (alias: st)" print " run Execute a workflow (alias: r)" print " validate Validate WorkflowDef references (alias: v)" print "" print "Flags:" print " --workspace (-w) Workspace name (defaults to active)" print " --infra (-i) Infra subdirectory (run only)" print " --dry-run (-n) Print execution plan without running (run only)" print "" print "Examples:" print " prvng w l" print " prvng workflow status deploy-services" print " prvng w run deploy-services --dry-run" } match $sub { "" | "help" | "h" | "-h" | "--help" => { do $help_text } "list" | "ls" | "l" => { main workflow list --workspace $workspace } "status" | "st" => { if ($arg1 | is-empty) { print "Error: workflow status requires a workflow id" print "Usage: prvng workflow status " return } main workflow status $arg1 --workspace $workspace } "run" | "r" => { if ($arg1 | is-empty) { print "Error: workflow run requires a workflow id" print "Usage: prvng workflow run " return } main workflow run $arg1 --workspace $workspace --infra $infra --dry-run=$dry_run } "validate" | "v" => { main workflow validate --workspace $workspace } _ => { print $"Unknown workflow subcommand: ($sub)" print "" do $help_text } } }