#!/usr/bin/env bash
# gstack-sync — team data sync CLI.
#
# Usage:
#   gstack-sync setup              — interactive auth flow
#   gstack-sync status             — show sync status (queue, cache, connection)
#   gstack-sync push-eval <file>   — push an eval result JSON to Supabase
#   gstack-sync push-retro <file>  — push a retro snapshot JSON
#   gstack-sync push-qa <file>     — push a QA report JSON
#   gstack-sync push-ship <file>   — push a ship log JSON
#   gstack-sync pull               — pull team data to local cache
#   gstack-sync drain              — drain the offline queue
#   gstack-sync logout             — clear auth tokens
#
# Env overrides (for testing):
#   GSTACK_DIR          — override auto-detected gstack root
#   GSTACK_STATE_DIR    — override ~/.gstack state directory
set -euo pipefail

GSTACK_DIR="${GSTACK_DIR:-$(cd "$(dirname "$0")/.." && pwd)}"

case "${1:-}" in
  setup)
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" setup
    ;;
  status)
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" status
    ;;
  push-eval)
    FILE="${2:?Usage: gstack-sync push-eval <file.json>}"
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-eval "$FILE"
    ;;
  push-retro)
    FILE="${2:?Usage: gstack-sync push-retro <file.json>}"
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-retro "$FILE"
    ;;
  push-qa)
    FILE="${2:?Usage: gstack-sync push-qa <file.json>}"
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-qa "$FILE"
    ;;
  push-ship)
    FILE="${2:?Usage: gstack-sync push-ship <file.json>}"
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-ship "$FILE"
    ;;
  pull)
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" pull
    ;;
  drain)
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" drain
    ;;
  logout)
    exec bun run "$GSTACK_DIR/lib/cli-sync.ts" logout
    ;;
  *)
    echo "Usage: gstack-sync {setup|status|push-eval|push-retro|push-qa|push-ship|pull|drain|logout}"
    echo ""
    echo "Commands:"
    echo "  setup              Interactive auth flow (opens browser)"
    echo "  status             Show sync status (queue, cache, connection)"
    echo "  push-eval <file>   Push eval result JSON to team store"
    echo "  push-retro <file>  Push retro snapshot JSON"
    echo "  push-qa <file>     Push QA report JSON"
    echo "  push-ship <file>   Push ship log JSON"
    echo "  pull               Pull team data to local cache"
    echo "  drain              Drain the offline sync queue"
    echo "  logout             Clear auth tokens"
    exit 1
    ;;
esac
