prvng_core/nulib/main_provisioning/commands/build.nu
Jesús Pérez 316622a78f
merge(refactor/lazy-loading): ADR-025 lazy-loading complete
557 files merged. Conflicts resolved:
  - CHANGELOG.md: took refactor/lazy-loading (session changelog)
  - versions.ncl: took refactor/lazy-loading (adds typedialog entries)
2026-04-17 23:09:56 +01:00

79 lines
2.9 KiB
Text

# Build command handler — directly invoke image subcommand handlers
export def handle_build_command [command: string, ops: string, flags: record] {
use ../../images/create.nu *
use ../../images/list.nu *
use ../../images/update.nu *
use ../../images/delete.nu *
use ../../images/state.nu *
use ../../images/watch.nu *
# Normalize: strip leading "image " prefix when invoked via "build build" registry path
let image_ops = if $command == "build" {
if ($ops | str starts-with "image ") {
$ops | str replace "image " ""
} else {
if ($ops | str trim) == "image" {
"help"
} else {
if ($ops | is-empty) { "help" } else { $ops }
}
}
} else {
# command == "image" from "bi" / "build-image" shortcut
if ($ops | is-empty) { "help" } else { $ops }
}
# Parse the image_ops to extract subcommand and role
let parts = ($image_ops | split row " ")
let subcommand = if ($parts | length) > 0 { $parts | get 0 } else { "help" }
let role = if ($parts | length) > 1 { $parts | get 1 } else { "" }
# Extract flag values
let check_f = ($flags | get check_mode? | default false)
let yes_f = ($flags | get auto_confirm? | default false)
let infra_f = ($flags.infra? | default "")
let provider_f = ($flags.provider? | default "")
# Call the appropriate image subcommand handler
match $subcommand {
"create" | "c" => {
image-create $role --infra=$infra_f --check=$check_f
}
"list" | "l" => {
image-list --provider=$provider_f
}
"update" | "u" => {
image-update $role --infra=$infra_f --check=$check_f
}
"delete" | "d" => {
image-delete $role --yes=$yes_f
}
"state" | "s" => {
image-state-list --provider=$infra_f
}
"watch" | "w" => {
image-watch --interval=(($role | into int) | default 30)
}
"help" | "h" | _ => {
print "Image Management Commands"
print "======================="
print ""
print "Usage: provisioning build image <command> [options]"
print ""
print "Commands:"
print " create <role> - Build snapshot for role"
print " list - Show all role states"
print " update <role> - Rebuild stale snapshot"
print " delete <role> - Remove snapshot + state"
print " state - List all state files"
print " watch - Monitor role freshness"
print ""
print "Options:"
print " --infra <path> - Infrastructure directory"
print " --check - Validate without executing"
print " --yes - Skip confirmation"
print ""
}
}
}