#!/bin/bash # Install/upgrade the inkreach-teable CLI from the local monorepo source. # Run from this skill's directory. Builds the CLI package and links it globally. set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Resolve the project root: skill lives at /.agents/skills/inkreach-teable/ PROJECT_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" CLI_DIR="$PROJECT_ROOT/packages/inkreach-cli" echo "=== inkreach-teable CLI installation ===" # Check Node.js if ! command -v node &> /dev/null; then echo "ERROR: Node.js is not installed. Install Node.js >= 18 first." exit 1 fi NODE_VERSION=$(node -v | sed 's/v//' | cut -d. -f1) if [ "$NODE_VERSION" -lt 18 ]; then echo "ERROR: Node.js >= 18 required, found v$(node -v)" exit 1 fi echo "✓ Node.js $(node -v)" # Check CLI source exists if [ ! -d "$CLI_DIR" ]; then echo "ERROR: CLI source not found at $CLI_DIR" echo " Ensure the inkreach-teable repo is checked out at $PROJECT_ROOT" exit 1 fi # Build echo "Building CLI from $CLI_DIR ..." cd "$CLI_DIR" if command -v pnpm &> /dev/null; then pnpm install --prefer-offline 2>/dev/null || true pnpm build else echo "ERROR: pnpm not found. Install pnpm first: npm i -g pnpm" exit 1 fi # Link globally. Prefer pnpm; fall back to npm link; finally create a wrapper. echo "Linking 'inkreach-teable' command globally ..." LINKED=0 if command -v pnpm &> /dev/null && pnpm link --global 2>/dev/null; then LINKED=1 elif command -v npm &> /dev/null && npm link 2>/dev/null; then LINKED=1 fi # Ensure a usable wrapper exists on PATH even if global bin isn't configured. BIN_DIR="${PNPM_GLOBAL_BIN:-$(npm bin -g 2>/dev/null):-${HOME}/.local/bin}" mkdir -p "$HOME/.local/bin" cat > "$HOME/.local/bin/inkreach-teable" < /dev/null; then echo "✓ inkreach-teable CLI installed ($(inkreach-teable --version 2>/dev/null || echo 'unknown'))" echo "" echo "Next: configure endpoint + token:" echo " inkreach-teable auth login --endpoint http://localhost:3000 --token " echo "Or create a PAT first:" echo " inkreach-teable auth token create --name my-cli" else echo "⚠ 'inkreach-teable' not on PATH. Add pnpm/npm global bin to your PATH, or run directly:" echo " node $CLI_DIR/dist/bin.js " fi