diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..4febb724 --- /dev/null +++ b/install.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +# gstack installer — curl-pipe-bash one-liner +# +# Usage: +# bash <(curl -fsSL https://raw.githubusercontent.com/garrytan/gstack/main/install.sh) +# +set -euo pipefail + +INSTALL_DIR="$HOME/.claude/skills/gstack" + +echo "gstack installer" +echo "━━━━━━━━━━━━━━━━" +echo "" + +# ─── Check prereqs ──────────────────────────────────────────── +for cmd in git bun; do + if ! command -v "$cmd" >/dev/null 2>&1; then + echo "Error: $cmd is required but not found." + case "$cmd" in + git) echo " Install: https://git-scm.com/downloads" ;; + bun) echo " Install: curl -fsSL https://bun.sh/install | bash" ;; + esac + exit 1 + fi +done + +# Claude CLI check (warn, don't fail — they might install it after) +if ! command -v claude >/dev/null 2>&1; then + echo "Warning: Claude CLI not found." + echo " Install: npm install -g @anthropic-ai/claude-code" + echo " (gstack requires Claude Code to run skills)" + echo "" +fi + +# ─── Fresh install vs upgrade ───────────────────────────────── +if [ -d "$INSTALL_DIR/.git" ]; then + echo "gstack already installed — upgrading..." + cd "$INSTALL_DIR" && git pull origin main && ./setup +else + echo "Installing gstack to $INSTALL_DIR..." + mkdir -p "$(dirname "$INSTALL_DIR")" + git clone https://github.com/garrytan/gstack.git "$INSTALL_DIR" + cd "$INSTALL_DIR" && ./setup +fi + +echo "" +echo "Note: gstack checks for updates by pinging our server with your" +echo "version number, OS, and a random device ID. No usage data is sent." +echo "" +echo "gstack installed! Try: /office-hours" diff --git a/setup b/setup index 4d7d29c0..407af0f9 100755 --- a/setup +++ b/setup @@ -434,3 +434,10 @@ if [ ! -d "$HOME/.gstack" ]; then echo " Welcome! Run /gstack-upgrade anytime to stay current." fi rm -f /tmp/gstack-latest-version + +# 9. Install ping (best-effort, non-blocking) +# Fires update-check with --force to register this install in Supabase. +# Sends only: version, OS, random UUID. No usage data. +if [ -x "$SOURCE_GSTACK_DIR/bin/gstack-update-check" ]; then + "$SOURCE_GSTACK_DIR/bin/gstack-update-check" --force 2>/dev/null & +fi