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

ZIP_URL="${AI_DEV_INSTALLER_ZIP_URL:-https://gl-robotics.com/ai-dev/ai-dev-installer-mvp.zip}"
INSTALL_ROOT="${AI_DEV_INSTALLER_ROOT:-$HOME/.local/share/ai-dev-installer}"
STAMP="$(date +%Y%m%d-%H%M%S)"
WORK_DIR="${TMPDIR:-/tmp}/ai-dev-installer-$STAMP"
ZIP_PATH="$WORK_DIR/ai-dev-installer.zip"
EXTRACT_DIR="$WORK_DIR/extract"

log() {
  printf '[%s] %s\n' "$(date +%H:%M:%S)" "$*"
}

download() {
  if command -v curl >/dev/null 2>&1; then
    curl -L "$1" -o "$2"
  elif command -v wget >/dev/null 2>&1; then
    wget "$1" -O "$2"
  else
    echo "curl or wget is required." >&2
    exit 1
  fi
}

mkdir -p "$WORK_DIR" "$EXTRACT_DIR" "$INSTALL_ROOT"

log "Downloading installer package..."
echo "URL: $ZIP_URL"
download "$ZIP_URL" "$ZIP_PATH"

log "Extracting installer package..."
if command -v unzip >/dev/null 2>&1; then
  unzip -q "$ZIP_PATH" -d "$EXTRACT_DIR"
else
  echo "unzip is required." >&2
  exit 1
fi

INSTALLER_DIR="$(find "$EXTRACT_DIR" -type f -path '*/scripts/install.sh' -print -quit | xargs dirname)"
if [ -z "${INSTALLER_DIR:-}" ] || [ ! -f "$INSTALLER_DIR/scripts/install.sh" ]; then
  echo "Installer package is invalid: scripts/install.sh was not found." >&2
  exit 1
fi

TARGET_DIR="$INSTALL_ROOT/current"
if [ -e "$TARGET_DIR" ]; then
  mv "$TARGET_DIR" "$INSTALL_ROOT/backup-$STAMP"
fi
cp -R "$INSTALLER_DIR" "$TARGET_DIR"

log "Starting AI Dev Installer..."
exec bash "$TARGET_DIR/scripts/install.sh" "$@"
