#!/usr/bin/env sh
set -eu

RELEASE_VERSION="${1:?Uso: sh scripts/deploy-release.sh <versão> <arquivo.tar.gz>}"
ARCHIVE="${2:?Uso: sh scripts/deploy-release.sh <versão> <arquivo.tar.gz>}"
APP_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)"
LOG_DIR="$APP_DIR/deployments"
LOG_FILE="$LOG_DIR/deployments.log"

if [ ! -f "$ARCHIVE" ]; then
  echo "Arquivo de deploy não encontrado: $ARCHIVE" >&2
  exit 1
fi

mkdir -p "$LOG_DIR"
CHECKSUM="$(sha256sum "$ARCHIVE" | awk '{print $1}')"
NOW="$(date '+%Y-%m-%d %H:%M:%S %z')"
printf '%s | INÍCIO | versão=%s | arquivo=%s | sha256=%s\n' "$NOW" "$RELEASE_VERSION" "$(basename "$ARCHIVE")" "$CHECKSUM" >> "$LOG_FILE"

cd "$APP_DIR"
tar -xzf "$ARCHIVE" --strip-components=1

if docker compose -f docker-compose.server.yml up -d --build --force-recreate; then
  NOW="$(date '+%Y-%m-%d %H:%M:%S %z')"
  printf '%s | SUCESSO | versão=%s | container=capital-autovistoria\n' "$NOW" "$RELEASE_VERSION" >> "$LOG_FILE"
  echo "Deploy $RELEASE_VERSION concluído e registrado."
else
  NOW="$(date '+%Y-%m-%d %H:%M:%S %z')"
  printf '%s | FALHA | versão=%s | consulte os logs do Docker\n' "$NOW" "$RELEASE_VERSION" >> "$LOG_FILE"
  echo "O deploy falhou. O evento foi registrado em $LOG_FILE." >&2
  exit 1
fi
