#!/usr/bin/env bash
# =============================================================================
# VarejoTech — Segundo Cérebro · Passo 1: trazer o cérebro para o computador
# -----------------------------------------------------------------------------
# O que faz: confere o ambiente, clona o repositório do seu segundo cérebro numa
# pasta local e anota onde ele ficou (para os próximos passos e para a skill
# /salvar acharem sozinhos).
#
# Pode rodar quantas vezes quiser: se o cérebro já estiver aqui, ele só confere.
#
# Uso:  bash 01-clonar.sh
# =============================================================================
set -uo pipefail

CONF="$HOME/.cerebro-setup.conf"
say()  { printf '\n\033[1;34m▸ %s\033[0m\n' "$*"; }
ok()   { printf '  \033[0;32m✓\033[0m %s\n' "$*"; }
warn() { printf '  \033[0;33m!\033[0m %s\n' "$*"; }
die()  { printf '\n\033[0;31m✗ %s\033[0m\n\n' "$*"; exit 1; }
ask()  { # ask VAR "Pergunta" "padrão"
  local __v="$1" __p="$2" __d="${3:-}" __r=""
  if [ -n "$__d" ]; then read -r -p "  $__p [$__d]: " __r; else read -r -p "  $__p: " __r; fi
  printf -v "$__v" '%s' "${__r:-$__d}"
}
slug() { # "Léo Flôres" -> "leo-flores"
  local s
  s="$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]' | iconv -f UTF-8 -t ASCII//TRANSLIT 2>/dev/null)"
  [ -n "$s" ] || s="$(printf '%s' "$1" | tr '[:upper:]' '[:lower:]')"
  # o //TRANSLIT do macOS deixa marcas soltas (l'eo, fl^ores) — fora com elas
  printf '%s' "$s" | tr -d "'\`^~\"" | tr -cs 'a-z0-9' '-' | sed 's/^-*//; s/-*$//'
}

echo
echo "=========================================================="
echo " Segundo Cérebro · Passo 1 — trazer o cérebro para o PC"
echo "=========================================================="

# --- 1. Ambiente -------------------------------------------------------------
say "Conferindo o que já existe neste computador"
command -v git >/dev/null 2>&1 || die "Git não está instalado. Instale em https://git-scm.com e rode de novo."
ok "git $(git --version | awk '{print $3}')"

HAS_GH=0
if command -v gh >/dev/null 2>&1; then
  HAS_GH=1
  if gh auth status >/dev/null 2>&1; then ok "GitHub CLI conectado"; else
    warn "GitHub CLI instalado mas não conectado — rode: gh auth login"
  fi
else
  warn "GitHub CLI (gh) não encontrado. Dá para seguir só com git, mas o login fica manual."
fi

if command -v claude >/dev/null 2>&1; then ok "Claude Code instalado"; else
  warn "Claude Code não encontrado. Instale com: npm install -g @anthropic-ai/claude-code"
fi

# --- 2. Dados do cérebro -----------------------------------------------------
say "Sobre o seu cérebro"
[ -f "$CONF" ] && . "$CONF" 2>/dev/null

ask GH_USER   "Seu usuário no GitHub"                 "${GH_USER:-}"
ask GH_REPO   "Nome do repositório do cérebro"        "${GH_REPO:-}"
ask DONO      "Como o agente deve te chamar"          "${DONO:-}"
ask AGENTE    "Nome do agente que roda na VPS"        "${AGENTE:-}"
ask PASTA     "Pasta onde o cérebro vai ficar"        "${PASTA:-$HOME/segundo-cerebro}"

[ -n "$GH_USER" ] && [ -n "$GH_REPO" ] && [ -n "$DONO" ] && [ -n "$AGENTE" ] \
  || die "Faltou responder alguma coisa. Rode de novo."

PASTA="${PASTA/#\~/$HOME}"
DONO_SLUG="$(slug "$DONO")"; AGENTE_SLUG="$(slug "$AGENTE")"

# --- 3. Clonar ---------------------------------------------------------------
say "Trazendo o cérebro"
if [ -d "$PASTA/.git" ]; then
  ok "Já existe um repositório em $PASTA"
  echo "     $(git -C "$PASTA" remote get-url origin 2>/dev/null || echo 'sem remote')"
  git -C "$PASTA" pull --rebase 2>&1 | sed 's/^/     /' || warn "não consegui atualizar agora — siga assim mesmo"
else
  mkdir -p "$(dirname "$PASTA")"
  if [ "$HAS_GH" = "1" ] && gh auth status >/dev/null 2>&1; then
    gh repo clone "$GH_USER/$GH_REPO" "$PASTA" || die "Não consegui clonar. Confira o nome do repositório e se sua conta tem acesso."
  else
    git clone "https://github.com/$GH_USER/$GH_REPO.git" "$PASTA" \
      || die "Não consegui clonar. Repositório privado precisa de login: rode 'gh auth login' e tente de novo."
  fi
  ok "Cérebro clonado em $PASTA"
fi

# --- 4. Anotar para os próximos passos ---------------------------------------
cat > "$CONF" <<EOF
# Gerado pelo passo 1 do setup do Segundo Cérebro — $(date +%Y-%m-%d)
GH_USER="$GH_USER"
GH_REPO="$GH_REPO"
DONO="$DONO"
DONO_SLUG="$DONO_SLUG"
AGENTE="$AGENTE"
AGENTE_SLUG="$AGENTE_SLUG"
PASTA="$PASTA"
EOF
mkdir -p "$HOME/.claude"
printf '%s\n' "$PASTA" > "$HOME/.claude/cerebro-path"
ok "Caminho anotado em ~/.claude/cerebro-path"

# --- 5. Retrato do que veio --------------------------------------------------
say "O que veio dentro"
printf '  %s arquivos versionados\n' "$(git -C "$PASTA" ls-files | wc -l | tr -d ' ')"
printf '  %s notas (.md)\n'          "$(git -C "$PASTA" ls-files '*.md' | wc -l | tr -d ' ')"
echo "  pastas na raiz:"
find "$PASTA" -maxdepth 1 -mindepth 1 -type d -not -name '.*' -exec basename {} \; | sort | sed 's/^/     · /'

echo
echo "=========================================================="
echo " ✓ Passo 1 concluído."
echo "   Cérebro: $PASTA"
echo "   Próximo: bash 02-guardiao.sh"
echo "=========================================================="
echo
