62 lines
2.2 KiB
Plaintext
Raw Normal View History

use lib_provisioning *
use utils.nu *
use ../lib_provisioning/config/accessor.nu *
# List all servers
export def "main list" [
...args # Args for list command
--infra (-i): string # Infra directory
--settings (-s): string # Settings path
--outfile (-o): string # Output file
--check (-c) # Only check mode
--debug (-x) # Use Debug mode
--xm # Debug with PROVISIONING_METADATA
--xc # Debug for task and services locally
--xr # Debug for remote servers
--xld # Log level with DEBUG
--metadata # Error with metadata
--notitles # not titles
--helpinfo (-h) # For more details use options "help"
--out: string # Print Output format: json, yaml, text (default)
]: nothing -> nothing {
if ($out | is-not-empty) {
set-provisioning-out $out
set-provisioning-no-terminal true
}
provisioning_init $helpinfo "servers list" $args
if $debug { set-debug-enabled true }
if $metadata { set-metadata-enabled true }
# Load server settings
let curr_settings = (find_get_settings --infra $infra --settings $settings)
# Get servers info
let servers_table = (mw_servers_info $curr_settings)
# Check if any servers exist
if ($servers_table | length) == 0 {
if (get-provisioning-out | is-empty) {
_print "No servers configured"
} else {
_print ([] | to json) "json" "result" "table"
}
} else {
# Display servers
if ($out | is-empty) {
# Terminal output with formatting
_print ($servers_table | table -i false)
} else {
# Structured output (JSON, YAML)
match (get-provisioning-out) {
"json" => { _print ($servers_table | to json) "json" "result" "table" }
"yaml" => { _print ($servers_table | to yaml) "yaml" "result" "table" }
_ => { _print ($servers_table | table -i false) }
}
}
}
if not $notitles and not (is-debug-enabled) { end_run "" }
}