Последняя активность 1 month ago

nuno ревизий этого фрагмента 1 month ago. К ревизии

1 file changed, 67 insertions

gistfile1.txt(файл создан)

@@ -0,0 +1,67 @@
1 + function 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 +
20 + local desc
21 + desc=$(json::get "$group_file" "desc")
22 + printf "\n %-20s %s\n" "Description:" "${desc:-—}"
23 +
24 + # Load peers
25 + local peers_list=()
26 + mapfile -t peers_list < <(json::get "$group_file" "peers")
27 + # Filter empty entries
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 +
35 + [[ -z "${peers_list[0]}" ]] && peer_count=0
36 +
37 + printf " %-20s %s\n" "Peers:" "$peer_count"
38 + printf " %s\n" "$(printf '─%.0s' {1..50})"
39 +
40 + if [[ "$peer_count" -gt 0 ]]; then
41 + printf "\n %-28s %-15s %-12s %s\n" "NAME" "IP" "RULE" "STATUS"
42 + printf " %s\n" "$(printf '─%.0s' {1..65})"
43 + for peer_name in "${peers_list[@]}"; do
44 + [[ -z "$peer_name" ]] && continue
45 + local ip rule status_str status_color
46 + ip=$(peers::get_ip "$peer_name")
47 + rule=$(peers::get_meta "$peer_name" "rule")
48 + rule="${rule:-—}"
49 +
50 + if peers::is_blocked "$peer_name"; then
51 + status_color="\033[1;31m"
52 + status_str="blocked"
53 + else
54 + status_color="\033[1;32m"
55 + status_str="active"
56 + fi
57 +
58 + printf " %-28s %-15s %-12s %b\n" \
59 + "$peer_name" "${ip:-—}" "$rule" \
60 + "${status_color}${status_str}\033[0m"
61 + done
62 + else
63 + printf " —\n"
64 + fi
65 +
66 + printf "\n"
67 + }
Новее Позже