#!/bin/bash

set -e

REPO="swapplications/uhf-server-dist"
INSTALL_DIR="/opt/uhf-server"
BIN_NAME="uhf-server"

# Check if sudo is available
if command -v sudo >/dev/null 2>&1; then
  HAS_SUDO=true
else
  HAS_SUDO=false
fi

# Check dependencies
if ! command -v unzip >/dev/null 2>&1; then
  echo "❌ unzip is not installed"
  exit 1
fi

# Check if ffmpeg is installed and has correct version
if ! command -v ffmpeg >/dev/null 2>&1; then
  echo "❌ ffmpeg is not installed, UHF Server requires ffmpeg 7.x.x or above"
  exit 1
fi
FFMPEG_VERSION=$(ffmpeg -version | head -1 | cut -d' ' -f3 | cut -d'.' -f1)
if [[ -z "$FFMPEG_VERSION" ]]; then
  echo "⚠️ Could not determine ffmpeg version, UHF Server requires ffmpeg 7.x.x or above"
elif [[ "$FFMPEG_VERSION" -lt 7 ]]; then
  echo "⚠️ ffmpeg version $FFMPEG_VERSION is not supported. Please install ffmpeg 7.x.x or above"
fi

# Detect architecture
ARCH=$(uname -m)
if [[ "$ARCH" == "x86_64" ]]; then
  PLATFORM="x64"
elif [[ "$ARCH" == "aarch64" ]]; then
  PLATFORM="arm64"
else
  echo "❌ Unsupported architecture: $ARCH"
  exit 1
fi

# Check if comskip is installed, if not install it
if ! command -v comskip >/dev/null 2>&1; then
  echo "📦 comskip not found, installing from source..."
  
  COMSKIP_TMP_DIR=$(mktemp -d)
  git clone --depth 1 "https://github.com/erikkaashoek/Comskip.git" "$COMSKIP_TMP_DIR" \
    && cd "$COMSKIP_TMP_DIR" \
    && ./autogen.sh \
    && ./configure \
    && make \
    && make install \
    && cd / \
    && rm -rf "$COMSKIP_TMP_DIR"
  
  echo "✅ comskip installed successfully!"
else
  echo "✅ comskip is already installed"
fi

echo "📡 Fetching latest release version..."
LATEST_VERSION=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | cut -d '"' -f 4)

if [[ -z "$LATEST_VERSION" ]]; then
  echo "❌ Could not fetch the latest release version."
  exit 1
fi

echo "🔖 Latest version: $LATEST_VERSION"
ASSET_FILENAME="UHF.Server-linux-${PLATFORM}-${LATEST_VERSION}.zip"
ASSET_URL="https://github.com/$REPO/releases/download/${LATEST_VERSION}/${ASSET_FILENAME}"

echo "📥 Downloading from: $ASSET_URL"
TMP_DIR=$(mktemp -d)
ZIP_FILE="$TMP_DIR/uhf-server.zip"

curl -L "$ASSET_URL" -o "$ZIP_FILE"

echo "📦 Unzipping..."
unzip -q "$ZIP_FILE" -d "$TMP_DIR/extracted"

if [[ "$HAS_SUDO" == "true" ]]; then
  echo "🚚 Installing to $INSTALL_DIR"
  sudo rm -rf "$INSTALL_DIR"
  sudo mkdir -p "$INSTALL_DIR"
  sudo cp -r "$TMP_DIR/extracted/"* "$INSTALL_DIR"

  echo "🔗 Creating symlink in /usr/local/bin..."
  sudo ln -sf "$INSTALL_DIR/$BIN_NAME" /usr/local/bin/$BIN_NAME
  sudo chmod +x "$INSTALL_DIR/$BIN_NAME"
else
  echo "🚚 Installing to $INSTALL_DIR"
  rm -rf "$INSTALL_DIR"
  mkdir -p "$INSTALL_DIR"
  cp -r "$TMP_DIR/extracted/"* "$INSTALL_DIR"

  echo "🔗 Creating symlink in /usr/local/bin..."
  ln -sf "$INSTALL_DIR/$BIN_NAME" /usr/local/bin/$BIN_NAME
  chmod +x "$INSTALL_DIR/$BIN_NAME"
fi

echo "✅ UHF Server installed successfully!"
echo "You can now run it using: $BIN_NAME"

rm -rf "$TMP_DIR"
