#!/usr/bin/env bash
set -euo pipefail

# Config
PKG_BASENAME="kimi-utils-ubuntu"
ARCH="amd64"
REPO_BASE="https://download.opensuse.org/repositories/home:/kimi:/utils"

show_download_cmds=0
override_release=""

error() { echo "ERROR: $*" >&2; exit 1; }

while [[ ${#} -gt 0 ]]; do
  case "$1" in
    -d|--download-cmds) show_download_cmds=1; shift ;;
    -r|--release)
      override_release="${2:-}"; shift 2 ;;
    -h|--help)
      cat <<EOF
Usage: $0 [--download-cmds] [--release <release>]
  --download-cmds, -d    Print curl/wget examples for the discovered .deb (always)
  --release, -r <rel>    Override detected distro release (e.g. 24.04)
EOF
      exit 0
      ;;
    *) break ;;
  esac
done

# Detect distro and version
if [[ -r /etc/os-release ]]; then
  . /etc/os-release
  ID_LC="${ID,,}"
  VER="${VERSION_ID:-}"
else
  error "/etc/os-release not readable"
fi

# Allow override for release (e.g., 24.04)
if [[ -n "$override_release" ]]; then
  VER="$override_release"
fi

[[ -n "$VER" ]] || error "can't determine VERSION_ID"

if [[ "$ID_LC" == "ubuntu" ]]; then
  REPO_DIST="xUbuntu_${VER}"
else
  REPO_DIST="${ID_LC}_${VER}"
fi

REPO_URL="${REPO_BASE}/${REPO_DIST}/${ARCH}/"

# Fetch directory listing
html=$(curl -fsSL "$REPO_URL") || error "failed to fetch repo index at $REPO_URL"

# Extract .deb filenames matching package name and arch
mapfile -t debs < <(echo "$html" |
  grep -oP '(?<=href=")[^"]+\.deb' |
  grep "$PKG_BASENAME" |
  grep "$ARCH" |
  sed 's#.*/##' |
  sort -u)

[ ${#debs[@]} -gt 0 ] || error "no matching .deb files found in $REPO_URL"

# Pick latest using dpkg version compare
best=""
best_ver=""

for f in "${debs[@]}"; do
  ver=$(echo "$f" | sed -E "s/^${PKG_BASENAME}_([^_]+)_${ARCH}\.deb$/\1/")
  [[ "$ver" != "$f" ]] || continue

  if [[ -z "$best_ver" ]]; then
    best="$f"; best_ver="$ver"
  else
    if dpkg --compare-versions "$ver" gt "$best_ver"; then
      best="$f"; best_ver="$ver"
    fi
  fi
done

[ -n "$best" ] || error "failed to determine latest .deb"

latest_url="${REPO_URL%/}/$best"

echo "Detected distro: ${NAME:-$ID_LC} ${VER:-$VERSION_ID}"
echo "Repository directory: $REPO_DIST"
echo "Latest remote package: $best (version: $best_ver)"
echo "URL: $latest_url"

# Compare with installed package version if present
need_download=0
if dpkg-query -W -f='${Version}' "${PKG_BASENAME}" >/dev/null 2>&1; then
  installed_ver=$(dpkg-query -W -f='${Version}' "${PKG_BASENAME}" 2>/dev/null || true)
  echo "Installed version: ${installed_ver:-<unknown>}"
  if dpkg --compare-versions "$installed_ver" lt "$best_ver"; then
    echo "A newer version is available."
    need_download=1
  elif dpkg --compare-versions "$installed_ver" gt "$best_ver"; then
    echo "Installed version is newer than repo version."
    need_download=0
  else
    echo "Installed version is the same as remote."
    need_download=0
  fi
else
  echo "Package ${PKG_BASENAME} is not installed locally."
  need_download=1
fi

# If -d was passed, always show download commands; otherwise show only when needed
if [[ $show_download_cmds -eq 1 || $need_download -eq 1 ]]; then
  echo
  echo "Download examples:"
  echo
  echo "curl (save with original filename):"
  echo "  curl -LO \"$latest_url\""
  echo
  echo "curl (save as specific filename):"
  echo "  curl -o ${PKG_BASENAME}.deb \"$latest_url\""
  echo
  echo "curl (resume download):"
  echo "  curl -C - -LO \"$latest_url\""
  echo
  echo "wget (save with original filename):"
  echo "  wget \"$latest_url\""
  echo
  echo "wget (save as specific filename):"
  echo "  wget -O ${PKG_BASENAME}.deb \"$latest_url\""
  echo
  echo "wget (resume download):"
  echo "  wget -c \"$latest_url\""
  echo
  echo "After download, install with:"
  echo "  sudo dpkg -i ${PKG_BASENAME}_${best_ver}_${ARCH}.deb"
fi
