Son aktivite 1 month ago

Revizyon 16644030f10a241bcf826f20d98fff22c9c3dedd

gistfile1.txt Ham
1function cmd::group::show() {
2 local name=""
3
4 while [[ $# -gt 0 ]]; do
5 case "$1" in
6 --name) util::require_flag "--name" "${2:-}" || return 1; name="$2"; shift 2 ;;
7 --help) cmd::group::help; return ;;
8 *) log::error "Unknown flag: $1"; return 1 ;;
9 esac
10 done
11
12 [[ -z "$name" ]] && log::error "Missing required flag: --name" && return 1
13 group::require_exists "$name" || return 1
14
15 local group_file
16 group_file="$(group::path "$name")"
17
18 log::section "Group: ${name}"
19 printf "\n"
20
21 local desc
22 desc=$(json::get "$group_file" "desc")
23 ui::row "Description" "${desc:-—}"
24
25 # Load and filter peers
26 local peers_list=()
27 mapfile -t peers_list < <(json::get "$group_file" "peers") || true
28 local filtered=()
29 for p in "${peers_list[@]:-}"; do
30 [[ -n "$p" ]] && filtered+=("$p")
31 done
32 peers_list=("${filtered[@]:-}")
33 local peer_count=${#peers_list[@]}
34 [[ -z "${peers_list[0]:-}" ]] && peer_count=0
35
36 # Count valid peers (data logic stays in command)
37 local valid_count=0
38 for p in "${peers_list[@]}"; do
39 [[ -z "$p" ]] && continue
40 peers::require_exists "$p" > /dev/null 2>&1 && (( valid_count++ )) || true
41 done
42 local peer_word="peers"
43 [[ "$valid_count" -eq 1 ]] && peer_word="peer"
44 ui::row "Peers" "${valid_count} ${peer_word}"
45 printf "\n"
46
47 if [[ "$peer_count" -gt 0 ]]; then
48 # Measure widths (data logic stays in command)
49 local w_name=16 w_ip=13
50 for peer_name in "${peers_list[@]}"; do
51 [[ -z "$peer_name" ]] && continue
52 (( ${#peer_name} > w_name )) && w_name=${#peer_name}
53 done
54 (( w_name += 2 ))
55
56 # Delegate rendering to ui::
57 ui::group::show_peers peers_list "$w_name" "$w_ip"
58 else
59 printf " \033[2m—\033[0m\n"
60 fi
61
62 printf "\n"
63}