#!/bin/bash
# Build (if needed) and install mcpctl locally.
# Auto-detects package format: RPM for Fedora/RHEL, DEB for Debian/Ubuntu.
#
# Usage:
#   ./installlocal.sh              # Build and install for native arch
#   MCPCTL_TARGET_ARCH=amd64 ./installlocal.sh   # Cross-compile for amd64
set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"

# Resolve target architecture
source scripts/arch-helper.sh
resolve_arch "${MCPCTL_TARGET_ARCH:-}"

# Detect package format
if command -v rpm &>/dev/null && command -v dnf &>/dev/null; then
  PKG_FORMAT="rpm"
elif command -v dpkg &>/dev/null && command -v apt &>/dev/null; then
  PKG_FORMAT="deb"
elif command -v rpm &>/dev/null; then
  PKG_FORMAT="rpm"
else
  echo "Error: Neither rpm/dnf nor dpkg/apt found. Unsupported system."
  exit 1
fi

echo "==> Detected package format: $PKG_FORMAT (arch: $NFPM_ARCH)"

# Find package matching the target architecture
# RPM uses x86_64/aarch64, DEB uses amd64/arm64
find_pkg() {
  local pattern="$1"
  ls $pattern 2>/dev/null | grep -E "[._](${NFPM_ARCH}|${RPM_ARCH})[._]" | head -1
}

if [ "$PKG_FORMAT" = "rpm" ]; then
  PKG_FILE=$(find_pkg "dist/mcpctl-*.rpm")

  # Build if no package exists or if source is newer
  if [[ -z "$PKG_FILE" ]] || [[ $(find src/ -name '*.ts' -newer "$PKG_FILE" 2>/dev/null | head -1) ]]; then
    echo "==> Building RPM..."
    bash scripts/build-rpm.sh
    PKG_FILE=$(find_pkg "dist/mcpctl-*.rpm")
  else
    echo "==> RPM is up to date: $PKG_FILE"
  fi

  echo "==> Installing $PKG_FILE..."
  sudo rpm -Uvh --force "$PKG_FILE"
else
  PKG_FILE=$(find_pkg "dist/mcpctl*.deb")

  # Build if no package exists or if source is newer
  if [[ -z "$PKG_FILE" ]] || [[ $(find src/ -name '*.ts' -newer "$PKG_FILE" 2>/dev/null | head -1) ]]; then
    echo "==> Building DEB..."
    bash scripts/build-deb.sh
    PKG_FILE=$(find_pkg "dist/mcpctl*.deb")
  else
    echo "==> DEB is up to date: $PKG_FILE"
  fi

  echo "==> Installing $PKG_FILE..."
  sudo dpkg -i "$PKG_FILE" || sudo apt-get install -f -y
fi

echo "==> Reloading systemd user units..."
systemctl --user daemon-reload

echo "==> Done!"
echo "    Enable mcplocal: systemctl --user enable --now mcplocal"
