#!/usr/bin/env bash # Deploy integrazione YouTube su produzione (sync + env + migrate + rebuild). set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" ENV_FILE="${ENV_FILE:-$ROOT/infra/.env}" SERVER="${DEPLOY_SERVER:-eminux@192.168.1.146}" REMOTE_DIR="${DEPLOY_PATH:-/opt/matchlivetv}" YOUTUBE_REDIRECT_URI="${YOUTUBE_REDIRECT_URI:-https://www.matchlivetv.it/api/v1/youtube/callback}" if [[ ! -f "$ENV_FILE" ]]; then echo "File non trovato: $ENV_FILE" >&2 exit 1 fi read_env() { local key="$1" grep -E "^${key}=" "$ENV_FILE" | head -1 | cut -d= -f2- | tr -d '\r' } YOUTUBE_CLIENT_ID="$(read_env YOUTUBE_CLIENT_ID)" YOUTUBE_CLIENT_SECRET="$(read_env YOUTUBE_CLIENT_SECRET)" YOUTUBE_PLATFORM_REFRESH_TOKEN="$(read_env YOUTUBE_PLATFORM_REFRESH_TOKEN)" if [[ -z "$YOUTUBE_CLIENT_ID" || -z "$YOUTUBE_CLIENT_SECRET" ]]; then echo "Manca YOUTUBE_CLIENT_ID o YOUTUBE_CLIENT_SECRET in $ENV_FILE" >&2 exit 1 fi echo "Sync codice → $SERVER:$REMOTE_DIR ..." bash "$ROOT/scripts/deploy/sync_to_server.sh" echo "Aggiorno variabili YouTube in $REMOTE_DIR/infra/.env ..." ssh "$SERVER" "bash -s" </dev/null; then sed -i "s|^\${key}=.*|\${key}=\${val}|" "\$ENV" else echo "\${key}=\${val}" >> "\$ENV" fi } upsert YOUTUBE_CLIENT_ID '${YOUTUBE_CLIENT_ID}' upsert YOUTUBE_CLIENT_SECRET '${YOUTUBE_CLIENT_SECRET}' upsert YOUTUBE_REDIRECT_URI '${YOUTUBE_REDIRECT_URI}' REMOTE if [[ -n "$YOUTUBE_PLATFORM_REFRESH_TOKEN" ]]; then ssh "$SERVER" "grep -q '^YOUTUBE_PLATFORM_REFRESH_TOKEN=' $REMOTE_DIR/infra/.env && sed -i 's|^YOUTUBE_PLATFORM_REFRESH_TOKEN=.*|YOUTUBE_PLATFORM_REFRESH_TOKEN=${YOUTUBE_PLATFORM_REFRESH_TOKEN}|' $REMOTE_DIR/infra/.env || echo 'YOUTUBE_PLATFORM_REFRESH_TOKEN=${YOUTUBE_PLATFORM_REFRESH_TOKEN}' >> $REMOTE_DIR/infra/.env" fi echo "Rebuild stack + migrate..." ssh "$SERVER" "cd $REMOTE_DIR/infra && docker compose -f docker-compose.prod.yml --env-file .env up -d --build rails sidekiq" sleep 25 ssh "$SERVER" "cd $REMOTE_DIR/infra && docker compose -f docker-compose.prod.yml exec -T rails bundle exec rails db:migrate" ssh "$SERVER" "cd $REMOTE_DIR/infra && docker compose -f docker-compose.prod.yml exec -T rails bundle exec rails db:seed" || true echo "Verifica route admin YouTube..." ssh "$SERVER" "cd $REMOTE_DIR/infra && docker compose -f docker-compose.prod.yml exec -T rails bundle exec rails routes -g youtube_platform | head -5" echo "" echo "OK. Prossimi passi manuali:" echo " 1. Admin: https://www.matchlivetv.it/admin/login" echo " 2. Token canale Light: https://www.matchlivetv.it/admin/youtube/platform" if [[ -z "$YOUTUBE_PLATFORM_REFRESH_TOKEN" ]]; then echo " (poi aggiungi YOUTUBE_PLATFORM_REFRESH_TOKEN al .env server e riavvia rails)" fi echo " 3. Full: Dettagli squadra → Collega canale YouTube"