#!/bin/bash
# ══════════════════════════════════════════════
# DRM — Script de Publicacao npm
# Uso: ./bin/publish.sh [patch|minor|major]
# ══════════════════════════════════════════════

set -e

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
DRM_REPO="$(dirname "$SCRIPT_DIR")"
HUB_DIR="$HOME/Documents/Hub MediaBuyer"

# Cores
RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m'
GRAY='\033[0;90m'
BOLD='\033[1m'
NC='\033[0m'

echo ""
echo -e "${CYAN}${BOLD}  ┌─────────────────────────────────────────┐${NC}"
echo -e "${CYAN}${BOLD}  │ DRM — Publish to npm                    │${NC}"
echo -e "${CYAN}${BOLD}  └─────────────────────────────────────────┘${NC}"
echo ""

# 1. Verificar que estamos no repo drm-core
if [ ! -f "$DRM_REPO/package.json" ]; then
  echo -e "${RED}  ✗ Nao encontrei package.json em $DRM_REPO${NC}"
  exit 1
fi

# 2. Versao atual
CURRENT=$(node -p "require('$DRM_REPO/package.json').version")
echo -e "${GRAY}  Versao atual: ${NC}${BOLD}v$CURRENT${NC}"

# 3. Bump type
BUMP=${1:-patch}
echo -e "${GRAY}  Bump type: ${NC}${BOLD}$BUMP${NC}"

# 4. Copiar scaffold do Hub MediaBuyer
echo ""
echo -e "${BOLD}  Sincronizando scaffold...${NC}"

if [ -d "$HUB_DIR/.drm-core" ]; then
  rm -rf "$DRM_REPO/scaffold/.drm-core"
  rm -rf "$DRM_REPO/scaffold/.claude"
  rm -rf "$DRM_REPO/scaffold/.drm"
  cp -R "$HUB_DIR/.drm-core" "$DRM_REPO/scaffold/.drm-core"
  cp -R "$HUB_DIR/.claude" "$DRM_REPO/scaffold/.claude"
  cp -R "$HUB_DIR/.drm" "$DRM_REPO/scaffold/.drm"
  echo -e "${GREEN}  ✓ Scaffold copiado do Hub MediaBuyer${NC}"
else
  echo -e "${RED}  ✗ Hub MediaBuyer nao encontrado em $HUB_DIR${NC}"
  echo -e "${GRAY}    Certifique-se de que o framework esta atualizado la.${NC}"
  exit 1
fi

# 5. Bump version
cd "$DRM_REPO"
npm version "$BUMP" --no-git-tag-version > /dev/null
NEW=$(node -p "require('./package.json').version")
echo -e "${GREEN}  ✓ Versao: v$CURRENT → v$NEW${NC}"

# 6. Atualizar config.yaml do scaffold
if [ -f "$DRM_REPO/scaffold/.drm/config.yaml" ]; then
  sed -i '' "s/version: \".*\"/version: \"$NEW\"/" "$DRM_REPO/scaffold/.drm/config.yaml"
  echo -e "${GREEN}  ✓ config.yaml atualizado para v$NEW${NC}"
fi

# 7. Git commit + push
git add -A
git commit -m "feat: v$NEW — update from Hub MediaBuyer"
git push origin main
echo -e "${GREEN}  ✓ GitHub atualizado${NC}"

# 8. Publish
echo ""
echo -e "${BOLD}  Publicando no npm...${NC}"
npm publish --access public
echo ""
echo -e "${GREEN}${BOLD}  ✓ drm-core@$NEW publicado!${NC}"
echo ""
echo -e "${GRAY}  Para atualizar um projeto:${NC}"
echo -e "${GRAY}  npx drm-core@$NEW install${NC}"
echo ""
