From 3576bf93c296e3d09477008dc974a429dc9a3d55 Mon Sep 17 00:00:00 2001
From: Pallav Vasa <pallav@infilytics.in>
Date: Sat, 17 May 2025 09:15:50 +0000
Subject: [PATCH] style: beautify and optimize gitops router with chatgpt

---
 gitops_router.sh | 185 +++++++++++++++++++++++++----------------------
 1 file changed, 98 insertions(+), 87 deletions(-)

diff --git a/gitops_router.sh b/gitops_router.sh
index bb86f72..eb1657c 100644
--- a/gitops_router.sh
+++ b/gitops_router.sh
@@ -1,117 +1,128 @@
 #!/usr/bin/env bash
 set -euo pipefail
 
-PERSON="$1"
+PERSON="${1:?Missing PERSON argument}"
 HOST="alps:3222"
 PROTOCOL="http"
 REPO="babbarc/workspaces"
 BRANCH="master"
-
 LOG_FILE="/tmp/.gitops-router-${PERSON}.log"
 
+# ─────────────────────────────────────────────
+# ANSI color codes
+readonly C_RESET='\033[0m'
+readonly C_INFO='\033[1;34m'  # bold blue
+readonly C_WARN='\033[1;33m'  # bold yellow
+readonly C_ERROR='\033[1;31m' # bold red
+
+# ─────────────────────────────────────────────
+# log <level> <message...> with emojis
 log() {
-  local level="${1^^}" # convert to uppercase
+  local lvl="${1^^}"
   shift
-  echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" | tee -a "$LOG_FILE"
+  local icon color
+
+  case "$lvl" in
+  INFO) icon="ℹ️" color="$C_INFO" ;;
+  WARN) icon="⚠️" color="$C_WARN" ;;
+  ERROR) icon="❌" color="$C_ERROR" ;;
+  *) icon="🔹" color="$C_RESET" ;;
+  esac
+
+  local ts
+  ts="$(date '+%Y-%m-%d %H:%M:%S')"
+  printf '%b%s [%s] [%s] %s%b\n' \
+    "$color" "$icon" "$ts" "$lvl" "$*" "$C_RESET" |
+    tee -a "$LOG_FILE"
 }
 
-log info "Received SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND"
+# ─────────────────────────────────────────────
+# Build the raw URL for fetching files
+geturl() {
+  local type="$1" file="$2"
+  printf '%s://%s/%s/%s/branch/%s/%s\n' \
+    "$PROTOCOL" "$HOST" "$REPO" "$type" "$BRANCH" "$file"
+}
 
-# Ensure the variable is set
+# ─────────────────────────────────────────────
+# Run a local script
+run() {
+  local script="$1"
+  "$HOME/.local/bin/$script"
+}
+
+# ─────────────────────────────────────────────
+# Download & install an artifact
+# update <file> <target-dir> <mode> [<type>]
+update() {
+  local file="$1" dir="$2" mode="$3" type="${4:-raw}"
+  local url out
+
+  out="$HOME/$dir/$(basename "$file")"
+  url="$(geturl "$type" "$file")"
+
+  [[ -f "$out" ]] && chmod 700 "$out"
+
+  if curl -fsSL "$url" -o "$out"; then
+    log info "Downloaded $url → $out"
+    chmod "$mode" "$out"
+  else
+    log error "Failed to download $url"
+    return 1
+  fi
+}
+
+# ─────────────────────────────────────────────
+# Clean up dangling podman images
+clean_images() {
+  local dangling
+  dangling="$(podman images -f dangling=true -q)"
+  if [[ -z "$dangling" ]]; then
+    log info "No dangling images to remove."
+  else
+    log warn "Removing dangling images..."
+    echo "$dangling" | xargs podman rmi
+    log info "Dangling images removed."
+  fi
+}
+
+# ─────────────────────────────────────────────
+# Entry & command parsing
 if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
   log error "No SSH_ORIGINAL_COMMAND provided."
   exit 1
 fi
 
-geturl() {
-  echo "$PROTOCOL://$HOST/$REPO/$1/branch/$BRANCH/$2"
-}
+log info "SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND"
+read -r cmd arg <<<"$SSH_ORIGINAL_COMMAND"
 
-function run() {
-  "$HOME"/.local/bin/"$1"
-}
-
-function update() {
-  type=${4:-raw}
-  fname=$(basename "$1")
-  output_path="$HOME/$2/$fname"
-  url=$(geturl "$type" "$1")
-
-  [ -f "$output_path" ] && chmod 700 "$output_path"
-  curl -fsSL "$url" -o "$output_path" && log info "Downloaded $url to $output_path"
-  chmod "$3" "$output_path"
-}
-
-clean_images() {
-  # Get list of image IDs with <none> tag (dangling images)
-  dangling_images=$(podman images -f "dangling=true" -q)
-
-  if [ -z "$dangling_images" ]; then
-    echo "✅ No dangling images to remove."
-  else
-    echo "⚠️ Removing dangling images..."
-    echo "$dangling_images" | xargs podman rmi
-    echo "🧹 Done!"
-  fi
-}
-
-# Strip arguments and parse command
-read -r command args <<<"$SSH_ORIGINAL_COMMAND"
-
-# Define command routing
-case "$command" in
+# ─────────────────────────────────────────────
+# Dispatch
+case "$cmd" in
 build)
-  case "$args" in
-  base)
-    run build-base.sh
-    ;;
-  workspace)
-    run build-workspace.sh
-    ;;
-  *)
-    log error "Invalid arguments for build command: $args"
-    ;;
+  case "$arg" in
+  base) run build-base.sh ;;
+  workspace) run build-workspace.sh ;;
+  *) log error "build: invalid arg '$arg'" ;;
   esac
   ;;
 update)
-  case "$args" in
-  workspace)
-    update build-workspace.sh .local/bin 500
-    ;;
-  base)
-    update build-base.sh .local/bin 500
-    ;;
-  access)
-    update access.yml . 400
-    ;;
-  ssh_router)
-    update ssh_router.sh .local/bin 500
-    ;;
-  gitops_router)
-    update gitops_router.sh .local/bin 500
-    ;;
-  home_tar)
-    update home.tar.gz . 500 media
-    ;;
-  gitconfig)
-    update gitconfig.template . 500
-    ;;
-  *)
-    log error "Invalid arguments for update command: $args"
-    ;;
+  case "$arg" in
+  base) update build-base.sh .local/bin 500 ;;
+  workspace) update build-workspace.sh .local/bin 500 ;;
+  access) update access.yml . 400 ;;
+  ssh_router) update ssh_router.sh .local/bin 500 ;;
+  gitops_router) update gitops_router.sh .local/bin 500 ;;
+  home_tar) update home.tar.gz . 500 media ;;
+  gitconfig) update gitconfig.template . 500 ;;
+  *) log error "update: invalid arg '$arg'" ;;
   esac
   ;;
-clean)
-  clean_images
-  ;;
-status)
-  podman images
-  ;;
-remove)
-  podman rm "$args"
-  ;;
+clean) clean_images ;;
+status) podman images ;;
+remove) podman rm "$arg" ;;
 *)
-  log error "Unknown command: $command"
+  log error "Unknown command: '$cmd'"
   exit 127
   ;;
 esac