#!/usr/bin/env bash
set -euo pipefail
APP_DIR="${1:-/opt/sincbrasil}"
VENV=$APP_DIR/venv
SERVICE=sincbrasil
if [[ $EUID -ne 0 ]]; then echo 'Execute: sudo bash install.sh'; exit 1; fi
. /etc/os-release
case "${VERSION_ID:-}" in 20.04|22.04|24.04) ;; *) echo "Ubuntu 20.04/22.04/24.04 esperado. Detectado ${VERSION_ID:-?}"; exit 1;; esac
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y python3 python3-venv python3-pip curl
mkdir -p "$APP_DIR" "$APP_DIR/data" "$APP_DIR/logs"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
mkdir -p "$APP_DIR/app"
cp -a "$SCRIPT_DIR/app/." "$APP_DIR/app/"
cp "$SCRIPT_DIR/requirements.txt" "$APP_DIR/requirements.txt"
python3 -m venv "$VENV"
"$VENV/bin/pip" install --upgrade pip
"$VENV/bin/pip" install -r "$APP_DIR/requirements.txt"
cat > "$APP_DIR/.env" <<EOF
VOD_APP_DIR=$APP_DIR
VOD_PORT=8090
VOD_HOST=0.0.0.0
EOF
cat > /etc/systemd/system/$SERVICE.service <<EOF
[Unit]
Description=Sinc Brasil v3
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=$APP_DIR
EnvironmentFile=$APP_DIR/.env
ExecStart=$VENV/bin/python -m uvicorn app.main:app --host 0.0.0.0 --port 8090
Restart=always
RestartSec=3
LimitNOFILE=65535
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now $SERVICE
systemctl --no-pager --full status $SERVICE || true
echo
echo 'Sinc Brasil v3 instalado.'
echo 'Painel: http://IP_DO_SERVIDOR:8090'
echo 'Login inicial: admin / admin'
echo 'Escolha o armazenamento em Configurações.'
