#!/usr/bin/env bash
set -euo pipefail
BASE="$(cd "$(dirname "$0")" && pwd)"
cd "$BASE"
command -v php >/dev/null || { echo 'PHP belum terpasang'; exit 1; }
command -v mysql >/dev/null || { echo 'MySQL client belum terpasang'; exit 1; }
command -v node >/dev/null || { echo 'Node.js belum terpasang'; exit 1; }
mkdir -p storage/sessions storage/logs
chmod 700 storage/sessions storage/logs
if [ ! -f .env ]; then cp .env.example .env; fi
if grep -q 'CHANGE_THIS_TO_32_BYTE_BASE64_KEY' .env; then K=$(openssl rand -base64 32 | tr -d '\n'); sed -i "s#CHANGE_THIS_TO_32_BYTE_BASE64_KEY#$K#" .env; fi
if grep -q 'CHANGE_THIS_LONG_RANDOM_TOKEN' .env; then T=$(openssl rand -hex 32); sed -i "s#CHANGE_THIS_LONG_RANDOM_TOKEN#$T#" .env; fi
if [ ! -d bot/node_modules ]; then (cd bot && npm install --omit=dev); fi
if command -v pm2 >/dev/null 2>&1; then pm2 delete billingnet-wa >/dev/null 2>&1 || true; pm2 start bot/manager.mjs --name billingnet-wa; pm2 save; else npm install -g pm2 && pm2 start bot/manager.mjs --name billingnet-wa && pm2 save && pm2 startup; fi
echo
echo 'Install aplikasi selesai.'
echo '1) Import database: mysql -u root -p < database/schema.sql'
echo '2) Isi .env: DB_*, APP_URL, INSTANTPAY_API_KEY'
echo '3) Buat admin: php web/cli_create_admin.php admin@domain.com PasswordKuat123!'
echo '4) Konfigurasi Nginx + HTTPS.'
