aboutsummaryrefslogtreecommitdiffstats
path: root/nvtable
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-25 11:10:47 +0200
committerDanilo M. <danix@danix.xyz>2026-09-25 11:10:47 +0200
commitdaa73c48a7282c9b21757626b4eb141e47bdbd5c (patch)
tree660b8e3f2bf4e37de1e13aa86d0e2f211f6c211b /nvtable
parent41b241053b139bf3f0648868adec16613d4ce8cc (diff)
downloaddanix-nvchecker-daa73c48a7282c9b21757626b4eb141e47bdbd5c.tar.gz
danix-nvchecker-daa73c48a7282c9b21757626b4eb141e47bdbd5c.zip
nvtable: one-line [repo] pkg installed -> repo layout
Rows now read '[label] name installed -> repo <markers> [upstream]'. Repo tags map to labels (personal, my-sbo, pentesting); packages in none of my repos are labelled [SBo]. Upstream is appended only when the repo column does not already show it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'nvtable')
-rwxr-xr-xnvtable59
1 files changed, 35 insertions, 24 deletions
diff --git a/nvtable b/nvtable
index 6798f9a..f324e18 100755
--- a/nvtable
+++ b/nvtable
@@ -27,6 +27,9 @@ NEWVER="${NVTABLE_NEWVER:-$HOME/.config/nvchecker/new_ver.json}"
AI_STATE="${XDG_STATE_HOME:-$HOME/.local/state}/appimage-updater/installed.json"
LOCK="${TMPDIR:-/tmp}/nvtable-$UID.lock"
+# Repo tag -> label shown in the [brackets] column.
+declare -A REPO_LABEL=([sbo]=my-sbo [my]=personal [sps]=pentesting)
+
SUPER="$HOME/Programming/GIT/slackbuilds-superrepo"
REPOS=(
"sbo:$SUPER/sbo-slackbuilds"
@@ -222,36 +225,44 @@ done < <(jq -r '.data|to_entries[]|"\(.key)\t\(.value.version // .value)"' "$NEW
# --- output -----------------------------------------------------------------
if ((${#rows[@]})); then
- # Widen the name column to the longest actual name, so a long stanza does not
- # shunt every later column out of alignment.
- w=22
- for r in "${rows[@]}"; do n=${r%%|*}; (( ${#n} > w )) && w=${#n}; done
- printf '%s %-*s %-14s %-14s %s%s\n' "$DIM" "$w" "package" "upstream" "installed" "repo" "$R"
+ # Pad every column to its widest value before adding color (printf would
+ # count the escape bytes as width). Upstream is appended only when the repo
+ # column does not already show it: repo behind, or nothing packaged.
+ wl=0 wn=0 wi=0 wr=0
+ for i in "${!rows[@]}"; do
+ IFS='|' read -r name uver iver rver rwhich si sr <<<"${rows[i]}"
+ lbl=
+ for t in ${rwhich//,/ }; do lbl+=${lbl:+,}${REPO_LABEL[$t]:-$t}; done
+ lbl="[${lbl:-SBo}]" # not in my repos: built straight from SBo
+ rows[i]="${rows[i]}|$lbl"
+ (( ${#lbl} > wl )) && wl=${#lbl}
+ (( ${#name} > wn )) && wn=${#name}
+ (( ${#iver} > wi )) && wi=${#iver}
+ (( ${#rver} > wr )) && wr=${#rver}
+ done
+ (( wi < 2 )) && wi=2; (( wr < 2 )) && wr=2
for r in "${rows[@]}"; do
- IFS='|' read -r name uver iver rver rwhich si sr <<<"$r"
- if [[ -z $iver ]]; then ic="$DIM"; ishow="--"
- elif (( si )); then ic="$GRN"; ishow=$iver
- else ic="$RED"; ishow=$iver
+ IFS='|' read -r name uver iver rver rwhich si sr lbl <<<"$r"
+ if [[ -z $iver ]]; then ic="$DIM"; iver="--"
+ elif (( si )); then ic="$GRN"
+ else ic="$RED"
+ fi
+ if [[ -z $rver ]]; then rc="$DIM"; rver="--"
+ elif (( sr )); then rc="$GRN"
+ else rc="$YEL"
fi
# Installed-behind and repo-behind are independent, and a row can be both
# (upstream moved, and neither the system nor the .info has caught up), so
# the marker shows each dimension rather than collapsing to the worst one.
- if [[ -z $iver ]]; then mark="$E_NA"
- elif (( si )); then mark="$E_OK"
- else mark="$E_UP"
- fi
- (( sr )) || mark+="$E_REPO"
- if [[ -z $rver ]]; then rc="$DIM"; rtxt="--"
- elif (( sr )); then rc="$GRN"; rtxt="$rwhich $rver"
- else rc="$YEL"; rtxt="$rwhich $rver"
- fi
- # Pad the marker cell to a fixed width: rows carrying both markers must not
- # push the name column right relative to rows carrying one.
- if (( NO_EMOJI )); then mcell=$(printf '%-5s' "$mark")
- else mcell=$mark; (( ${#mark} > 1 )) || mcell="$mark "
+ if [[ $iver == -- ]]; then mark="$E_NA"
+ elif (( si )); then mark="$E_OK"
+ else mark="$E_UP"
fi
- printf ' %s %s%-*s%s %-14s %s%-14s%s %s%s%s\n' \
- "$mcell" "$WHT" "$w" "$name" "$R" "$uver" "$ic" "$ishow" "$R" "$rc" "$rtxt" "$R"
+ (( sr )) || mark+=" $E_REPO"
+ utxt=; [[ $rver == -- ]] || (( ! sr )) && utxt=" $CYA$uver$R"
+ printf ' %s%-*s%s %s%-*s%s %s%*s%s -> %s%-*s%s %s%s\n' \
+ "$DIM" "$wl" "$lbl" "$R" "$WHT" "$wn" "$name" "$R" \
+ "$ic" "$wi" "$iver" "$R" "$rc" "$wr" "$rver" "$R" "$mark" "$utxt"
done
echo
fi