#!/usr/bin/env bash # ui/net.module.sh — rendering for network services # ====================================================== # List rendering # ====================================================== # ui::net::list_row function ui::net::list_row() { local name="${1:-}" ip="${2:-}" desc="${3:-}" tags="${4:-}" ports="${5:-}" \ w_name="${6:-16}" w_ip="${7:-14}" w_ports="${8:-20}" local name_pad ip_pad name_pad=$(printf "%-${w_name}s" "$name") ip_pad=$(printf "%-${w_ip}s" "$ip") local ports_pad_n=$(( w_ports - ${#ports} )) [[ $ports_pad_n -lt 0 ]] && ports_pad_n=0 local tags_display="" [[ -n "$tags" ]] && tags_display=" \033[2m[${tags}]\033[0m" printf " %s %s %s%*s %s%b\n" \ "$name_pad" "$ip_pad" "$ports" "$ports_pad_n" "" \ "${desc:--}" "$tags_display" } # Table version (kept for future display config) function ui::net::list_header_table() { printf "\n %-20s %-16s %-6s %s\n" "NAME" "IP" "PORTS" "DESCRIPTION" printf " %s\n" "$(printf '─%.0s' {1..72})" } function ui::net::list_row_table() { local name="${1:-}" ip="${2:-}" desc="${3:-}" tags="${4:-}" port_count="${5:-}" local tag_display="" [[ -n "$tags" ]] && tag_display=" \033[0;37m[${tags}]\033[0m" printf " %-20s %-16s %-6s %s%b\n" \ "$name" "$ip" "${port_count}p" "${desc:-—}" "$tag_display" } # ====================================================== # Show rendering # ====================================================== # ui::net::show_port_row function ui::net::show_port_row() { local port_name="${1:-}" port="${2:-}" proto="${3:-}" desc="${4:-}" local port_display=":${port}/${proto}" local port_pad port_pad=$(printf "%-14s" "$port_display") if [[ -n "$desc" ]]; then printf " %s \033[2m→\033[0m %-16s \033[2m# %s\033[0m\n" \ "$port_pad" "$port_name" "$desc" else printf " %s \033[2m→\033[0m %s\n" \ "$port_pad" "$port_name" fi }