#!/usr/bin/env bash
set -e

# DOI Service Hub installer
# Supports cPanel/MultiPHP CLI mismatch.
# Usage on cPanel:
# PHP_BIN=/opt/cpanel/ea-php83/root/usr/bin/php bash install.sh

PHP_BIN="${PHP_BIN:-php}"
COMPOSER_BIN="${COMPOSER_BIN:-composer}"
ENV_CREATED=0

if command -v /opt/cpanel/ea-php83/root/usr/bin/php >/dev/null 2>&1; then
  CPANEL_PHP83="/opt/cpanel/ea-php83/root/usr/bin/php"
else
  CPANEL_PHP83=""
fi

if ! $PHP_BIN -r 'exit(version_compare(PHP_VERSION, "8.2.0", ">=") ? 0 : 1);' 2>/dev/null; then
  if [ -n "$CPANEL_PHP83" ]; then
    PHP_BIN="$CPANEL_PHP83"
  else
    echo "ERROR: PHP 8.2+ is required. Current PHP: $($PHP_BIN -r 'echo PHP_VERSION;' 2>/dev/null || echo unknown)"
    echo "On cPanel, try: PHP_BIN=/opt/cpanel/ea-php83/root/usr/bin/php bash install.sh"
    exit 1
  fi
fi

echo "== DOI Service Hub installer =="
echo "Using PHP: $($PHP_BIN -v | head -n 1)"

if [ ! -f .env ]; then
  cp .env.example .env
  ENV_CREATED=1
  echo ""
  echo ".env created successfully."
  echo "IMPORTANT: Edit .env now and set APP_URL + database credentials, then run this script again."
  echo "Example: nano .env"
  exit 0
fi

# Quick DB config warning
if grep -q "DB_DATABASE=doi_service_hub" .env && grep -q "DB_USERNAME=root" .env; then
  echo "WARNING: .env still looks like default database settings. Make sure DB_DATABASE, DB_USERNAME, DB_PASSWORD are correct."
fi

if [ -f /opt/cpanel/composer/bin/composer ]; then
  $PHP_BIN /opt/cpanel/composer/bin/composer install --no-dev --optimize-autoloader
else
  $COMPOSER_BIN install --no-dev --optimize-autoloader
fi

$PHP_BIN artisan key:generate --force
$PHP_BIN artisan migrate --seed --force
$PHP_BIN artisan storage:link || true
$PHP_BIN artisan optimize:clear
$PHP_BIN artisan config:cache
$PHP_BIN artisan route:cache
$PHP_BIN artisan view:cache

echo "Installation completed."
