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

PHP_BIN="${PHP_BIN:-php}"
COMPOSER_BIN="${COMPOSER_BIN:-composer}"
RUN_COA_SEEDER="${RUN_COA_SEEDER:-false}"

echo "== cPanel staging post-deploy =="
echo "PHP command: ${PHP_BIN}"
echo "Composer command: ${COMPOSER_BIN}"

mkdir -p \
  storage/app \
  storage/framework/cache \
  storage/framework/sessions \
  storage/framework/views \
  storage/logs \
  bootstrap/cache

if [ ! -f .env ]; then
  echo "ERROR: .env is missing on the cPanel staging folder."
  echo "Create it once in cPanel before running the deployment."
  exit 1
fi

if command -v "${COMPOSER_BIN}" >/dev/null 2>&1; then
  "${COMPOSER_BIN}" install --no-dev --prefer-dist --no-interaction --optimize-autoloader
elif [ -f composer.phar ]; then
  "${PHP_BIN}" composer.phar install --no-dev --prefer-dist --no-interaction --optimize-autoloader
else
  echo "ERROR: Composer was not found. Set CPANEL_COMPOSER_BIN or keep composer.phar in the app folder."
  exit 1
fi

"${PHP_BIN}" artisan storage:link || true
"${PHP_BIN}" artisan migrate --force

if [ "${RUN_COA_SEEDER}" = "true" ]; then
  "${PHP_BIN}" artisan db:seed --class=QboChartOfAccountsSeeder --force
fi

"${PHP_BIN}" artisan config:clear
"${PHP_BIN}" artisan route:clear
"${PHP_BIN}" artisan view:clear
"${PHP_BIN}" artisan optimize

echo "== cPanel staging deploy complete =="
