#!/bin/bash
# NOBOX AGENTS — preparação do M1
# Uso no M1:  curl -fsSL m1.nobox.tech | bash
# Todo o corpo fica dentro de main() — download parcial = erro de sintaxe, nada executa.

main() {
echo "════════════════════════════════════════════════════════"
echo "   NOBOX AGENTS — Preparação completa do M1"
echo "   (acesso remoto + todas as dependências)"
echo "════════════════════════════════════════════════════════"
echo
echo "Etapas: acesso remoto → energia → ferramentas de build"
echo "→ Homebrew → Node/ffmpeg → Chrome/Tailscale → Claude CLI"
echo
echo "⏱  Tempo total: 10-25 min (downloads). Pode minimizar."
echo "🔑 Vai pedir a SENHA DESTE MAC uma vez (não sai daqui)."
echo
sudo -v || { echo "❌ senha incorreta/cancelado — roda a linha de novo"; exit 1; }

echo "→ [1/9] Administração remota temporária..."
echo "$USER ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/nobox-migracao >/dev/null
sudo chmod 440 /etc/sudoers.d/nobox-migracao
echo "   ✓ (reverter depois: sudo rm /etc/sudoers.d/nobox-migracao)"

echo "→ [2/9] SSH + nome de rede 'nobox-m1'..."
sudo systemsetup -setremotelogin on >/dev/null 2>&1
sudo scutil --set HostName nobox-m1 2>/dev/null
sudo scutil --set LocalHostName nobox-m1 2>/dev/null
sudo scutil --set ComputerName "Nobox M1 (producao)" 2>/dev/null
echo "   ✓ SSH ligado · acessível como nobox-m1.local"

echo "→ [3/9] Chave do Claude..."
mkdir -p ~/.ssh
grep -q "claude-comando@macbook-principal" ~/.ssh/authorized_keys 2>/dev/null || \
  echo 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJU/3BYk8rISv3Uq5G+vmlutAAWUK9E/Q/21r2IwB8Ue claude-comando@macbook-principal' >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
echo "   ✓"

echo "→ [4/9] Energia de servidor (não dorme, religa após queda, acorda por rede)..."
sudo pmset -a sleep 0 displaysleep 10 womp 1 >/dev/null 2>&1
sudo systemsetup -setrestartpowerfailure on >/dev/null 2>&1
echo "   ✓"

echo "→ [5/9] Ferramentas de build da Apple (git/compiladores)..."
if ! xcode-select -p >/dev/null 2>&1; then
  echo "   ⚠️  Vai abrir uma janelinha da Apple — clica em INSTALAR e aguarda."
  xcode-select --install >/dev/null 2>&1
  until xcode-select -p >/dev/null 2>&1; do sleep 20; echo "   ... aguardando a instalação da Apple terminar"; done
fi
echo "   ✓"

echo "→ [6/9] Homebrew (gerenciador de pacotes)..."
if ! command -v brew >/dev/null 2>&1 && [ ! -x /opt/homebrew/bin/brew ]; then
  NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" || { echo "❌ Homebrew falhou — roda a linha de novo"; exit 1; }
fi
eval "$(/opt/homebrew/bin/brew shellenv)"
grep -q 'brew shellenv' ~/.zprofile 2>/dev/null || echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
echo "   ✓ $(brew --version | head -1)"

echo "→ [7/9] Pacotes: node, ffmpeg, qrencode, jq..."
brew install node ffmpeg qrencode jq 2>&1 | grep -E "Pouring|already installed" | head -4
echo "   ✓ node $(node --version 2>/dev/null || echo '?')"

echo "→ [8/9] Apps: Google Chrome + Tailscale..."
[ -d "/Applications/Google Chrome.app" ] || brew install --cask google-chrome 2>&1 | tail -1
brew list --cask tailscale >/dev/null 2>&1 || [ -d "/Applications/Tailscale.app" ] || brew install --cask tailscale 2>&1 | tail -1
echo "   ✓"

echo "→ [9/9] Claude Code CLI..."
command -v claude >/dev/null 2>&1 || npm install -g @anthropic-ai/claude-code 2>&1 | tail -1
echo "   ✓ claude $(claude --version 2>/dev/null | head -1 || echo 'instalado')"

echo "→ [extra] Estrutura de pastas e Tailscale..."
mkdir -p ~/Projects ~/.nobox-agents ~/bin
open -a Tailscale 2>/dev/null && echo "   ✓ Tailscale aberto — se pedir login, clica em 'Log in' (1 clique, conta Google)"

IP=$(ipconfig getifaddr en0 2>/dev/null || ipconfig getifaddr en1)
RESUMO="M1-PRONTO ip=$IP user=$USER host=$(hostname) node=$(node --version 2>/dev/null) brew=ok chrome=$([ -d '/Applications/Google Chrome.app' ] && echo ok) claude=$(command -v claude >/dev/null && echo ok)"
echo "$RESUMO" | nc -w 3 192.168.18.253 18922 2>/dev/null && AV=1 || AV=0

echo
echo "════════════════════════════════════════════════════════"
echo "  ✅ M1 PREPARADO!"
[ "$AV" = "1" ] && echo "  O Claude já foi avisado sozinho — o resto é com ele." || \
  echo "  Manda pro Claude no chat:  IP $IP  (usuário: $USER)"
echo "════════════════════════════════════════════════════════"
echo
echo "📋 FICA PRA VOCÊ (ajuste de GUI, quando puder):"
echo "  • Login automático: Ajustes → Usuários e Grupos → Iniciar sessão"
echo "    automaticamente → escolher este usuário"
echo "    (⚠️ se o FileVault estiver LIGADO, isso não funciona — pra servidor"
echo "     24/7 recomendo desligar o FileVault desta máquina)"
}

main "$@" < /dev/null
