function ui::logs::wg_row() { local ts="${1:-}" client="${2:-}" endpoint="${3:-}" event="${4:-}" count="${5:-1}" \ w_client="${6:-20}" w_endpoint="${7:-20}" local event_color case "$event" in handshake) event_color="\033[1;32m" ;; attempt) event_color="\033[1;31m" ;; *) event_color="\033[0;37m" ;; esac local count_suffix="" [[ "$count" -gt 1 ]] && count_suffix=" \033[2m(x${count})\033[0m" local client_pad endpoint_pad_n client_pad=$(printf "%-${w_client}s" "$client") endpoint_pad_n=$(( w_endpoint - ${#endpoint} )) [[ $endpoint_pad_n -lt 0 ]] && endpoint_pad_n=0 printf " %s %s %s%*s %b%s\033[0m%b\n" \ "$ts" "$client_pad" "$endpoint" "$endpoint_pad_n" "" \ "$event_color" "$event" "$count_suffix" } function ui::logs::wg_row_table() { local ts="${1:-}" client="${2:-}" endpoint="${3:-}" event="${4:-}" count="${5:-1}" local count_str="" [[ "$count" -gt 1 ]] && count_str=" (x${count})" local event_colored case "$event" in attempt*) event_colored="\033[1;31m${event}\033[0m" ;; handshake*) event_colored="\033[1;32m${event}\033[0m" ;; *) event_colored="$event" ;; esac printf " %-20s %-20s %-18s %b%s\n" "$ts" "$client" "$endpoint" "$event_colored" "$count_str" }