function cmd::group::show() { local name="" while [[ $# -gt 0 ]]; do case "$1" in --name) util::require_flag "--name" "${2:-}" || return 1; name="$2"; shift 2 ;; --help) cmd::group::help; return ;; *) log::error "Unknown flag: $1"; return 1 ;; esac done [[ -z "$name" ]] && log::error "Missing required flag: --name" && return 1 group::require_exists "$name" || return 1 local group_file group_file="$(group::path "$name")" log::section "Group: ${name}" printf "\n" local desc desc=$(json::get "$group_file" "desc") ui::row "Description" "${desc:-—}" # Load and filter peers local peers_list=() mapfile -t peers_list < <(json::get "$group_file" "peers") || true local filtered=() for p in "${peers_list[@]:-}"; do [[ -n "$p" ]] && filtered+=("$p") done peers_list=("${filtered[@]:-}") local peer_count=${#peers_list[@]} [[ -z "${peers_list[0]:-}" ]] && peer_count=0 # Count valid peers (data logic stays in command) local valid_count=0 for p in "${peers_list[@]}"; do [[ -z "$p" ]] && continue peers::require_exists "$p" > /dev/null 2>&1 && (( valid_count++ )) || true done local peer_word="peers" [[ "$valid_count" -eq 1 ]] && peer_word="peer" ui::row "Peers" "${valid_count} ${peer_word}" printf "\n" if [[ "$peer_count" -gt 0 ]]; then # Measure widths (data logic stays in command) local w_name=16 w_ip=13 for peer_name in "${peers_list[@]}"; do [[ -z "$peer_name" ]] && continue (( ${#peer_name} > w_name )) && w_name=${#peer_name} done (( w_name += 2 )) # Delegate rendering to ui:: ui::group::show_peers peers_list "$w_name" "$w_ip" else printf " \033[2m—\033[0m\n" fi printf "\n" }