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

# Install Hugo Extended manually into /usr/local/bin (no apt/snap).
# Usage:
#   ./install_hugo_manual.sh 0.157.0
#   HUGO_VERSION=0.157.0 ./install_hugo_manual.sh

VERSION="${1:-${HUGO_VERSION:-0.157.0}}"
REPO_BASE="https://github.com/gohugoio/hugo/releases/download/v${VERSION}"
DEST_BIN="/usr/local/bin/hugo"
DOC_DIR="/usr/local/share/doc"

need_cmd() {
  command -v "$1" >/dev/null 2>&1 || {
    echo "Missing required command: $1" >&2
    exit 1
  }
}

need_cmd uname
need_cmd tar
need_cmd install
need_cmd mktemp
need_cmd curl

if [[ "$(id -u)" -eq 0 ]]; then
  SUDO=""
else
  need_cmd sudo
  SUDO="sudo"
fi

ARCH_RAW="$(uname -m)"
case "${ARCH_RAW}" in
  aarch64|arm64)
    CANDIDATES=(
      "hugo_extended_${VERSION}_linux-arm64.tar.gz"
      "hugo_extended_${VERSION}_Linux-ARM64.tar.gz"
    )
    ;;
  armv7l|armv6l|armhf)
    CANDIDATES=(
      "hugo_extended_${VERSION}_linux-arm.tar.gz"
      "hugo_extended_${VERSION}_Linux-ARM.tar.gz"
    )
    ;;
  x86_64|amd64)
    CANDIDATES=(
      "hugo_extended_${VERSION}_linux-amd64.tar.gz"
      "hugo_extended_${VERSION}_Linux-64bit.tar.gz"
    )
    ;;
  *)
    echo "Unsupported architecture: ${ARCH_RAW}" >&2
    exit 1
    ;;
esac

TMP_DIR="$(mktemp -d /tmp/hugo-install.XXXXXX)"
trap "rm -rf \"${TMP_DIR}\"" EXIT

ARCHIVE=""
for asset in "${CANDIDATES[@]}"; do
  url="${REPO_BASE}/${asset}"
  candidate_archive="${TMP_DIR}/${asset}"
  if curl -fL "$url" -o "$candidate_archive"; then
    ARCHIVE="$candidate_archive"
    echo "Downloaded: $url"
    break
  fi
  rm -f "$candidate_archive"
done

if [[ -z "$ARCHIVE" ]]; then
  echo "Failed to download Hugo Extended ${VERSION} for architecture ${ARCH_RAW}." >&2
  echo "Tried assets:" >&2
  printf 
