- DAG architecture: `dag show/validate/export` (nulib/main_provisioning/dag.nu),
config loader (lib_provisioning/config/loader/dag.nu), taskserv dag-executor.
Backed by schemas/lib/dag/*.ncl; orchestrator emits NATS events via
WorkspaceComposition::into_workflow. See ADR-020, ADR-021.
- Unified Component Architecture: components/mod.nu, main_provisioning/
{components,workflow,extensions,ontoref-queries}.nu. Full workflow engine with
topological sort and NATS subject emission. Blocks A-H complete (libre-daoshi).
- Commands-registry: nulib/commands-registry.ncl (Nickel source, 314 lines) +
JSON cache at ~/.cache/provisioning/commands-registry.json rebuilt on source
change. cli/provisioning fast-path alias expansion avoids cold Nu startup.
ADDING_COMMANDS.md documents new-command workflow.
- Platform service manager: service-manager.nu (+573), startup.nu (+611),
service-check.nu (+255); autostart/bootstrap/health/target refactored.
- Nushell 0.112.2 migration: removed all try/catch and bash redirections;
external commands prefixed with ^; type signatures enforced. Driven by
scripts/refactor-try-catch{,-simplified}.nu.
- TTY stack: removed shlib/*-tty.sh; replaced by cli/tty-dispatch.sh,
tty-filter.sh, tty-commands.conf.
- New domain modules: images/ (golden image lifecycle), workspace/{state,sync}.nu,
main_provisioning/{bootstrap,cluster-deploy,fip,state}.nu, commands/{state,
build,integrations/auth,utilities/alias}.nu, platform.nu expanded (+874).
- Config loader overhaul: loader/core.nu slimmed (-759), cache/core.nu
refactored (-454), removed legacy loaders/file_loader.nu (-330).
- Thirteen new provisioning-<domain>.nu top-level modules for bash dispatcher.
- Tests: test_workspace_state.nu (+351); updates to test_oci_registry,
test_services.
- README + CHANGELOG updated.
79 lines
2.9 KiB
Text
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 ""
|
|
}
|
|
}
|
|
}
|