#!/usr/bin/env bash # gstack-sync — team data sync CLI. # # Usage: # gstack-sync setup — interactive auth flow # gstack-sync status — show sync status # gstack-sync test — validate full sync flow # gstack-sync show [evals|ships|retros] — view team data # gstack-sync push-{eval,retro,qa,ship,greptile} — push data # gstack-sync push-transcript — sync Claude session transcripts # 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 }" exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-eval "$FILE" ;; push-retro) FILE="${2:?Usage: gstack-sync push-retro }" exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-retro "$FILE" ;; push-qa) FILE="${2:?Usage: gstack-sync push-qa }" exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-qa "$FILE" ;; push-ship) FILE="${2:?Usage: gstack-sync push-ship }" exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-ship "$FILE" ;; push-greptile) FILE="${2:?Usage: gstack-sync push-greptile }" exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-greptile "$FILE" ;; push-transcript) exec bun run "$GSTACK_DIR/lib/cli-sync.ts" push-transcript ;; test) exec bun run "$GSTACK_DIR/lib/cli-sync.ts" test ;; show) exec bun run "$GSTACK_DIR/lib/cli-sync.ts" show "${@:2}" ;; 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 [args]" echo "" echo "Commands:" echo " setup Interactive auth flow (opens browser)" echo " status Show sync status (queue, cache, connection)" echo " test Validate full sync flow (push + pull)" echo " show [evals|ships|retros|sessions] View team data in terminal" echo " push-eval Push eval result JSON to team store" echo " push-retro Push retro snapshot JSON" echo " push-qa Push QA report JSON" echo " push-ship Push ship log JSON" echo " push-greptile Push Greptile triage entry JSON" echo " push-transcript Sync Claude session transcripts" echo " pull Pull team data to local cache" echo " drain Drain the offline sync queue" echo " logout Clear auth tokens" exit 1 ;; esac