#!/bin/bash # ProofLab PDB Bridge - One-time setup # Double-click to run. Installs dependencies, builds picker, configures token. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LOCAL_SERVER="$HOME/Documents/ProofLab-Server" LOCAL_CORE="$HOME/Library/Application Support/ProofLab/core" SOURCE_SERVER="" SYNCED_TO_LOCAL=false # If run from SMB share, mark source for sync. if [[ "$SCRIPT_DIR" == /Volumes/* ]]; then SOURCE_SERVER="$SCRIPT_DIR" fi cd "$SCRIPT_DIR" echo "============================================" echo "ProofLab PDB Bridge - Setup" echo "============================================" echo "" # Check for Node.js if ! command -v node &>/dev/null || ! command -v npm &>/dev/null; then echo "Node.js is not installed." echo "" echo "Install it with Homebrew:" echo " 1. Install Homebrew: /bin/bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)\"" echo " 2. Then: brew install node" echo " 3. Close this window, open a new Terminal, then run this script again." echo "" echo "Or download from: https://nodejs.org" echo "" read -p "Press Enter to close." exit 1 fi echo "Node $(node -v) | npm $(npm -v)" echo "" echo "[1/5] Validating ProofLab activation..." node scripts/require-prooflab-activation.mjs if [ $? -ne 0 ]; then echo "" echo "ProofLab activation is required before bridge setup." echo "Open ProofLab in Illustrator on this machine and complete activation, then run setup again." read -p "Press Enter to close." exit 1 fi if [ -n "$SOURCE_SERVER" ]; then echo "" echo "[2/6] Syncing local bridge package..." mkdir -p "$HOME/Documents" UPDATE_EXIT=11 if [ -f "$SOURCE_SERVER/scripts/local-bridge-updater.mjs" ]; then node "$SOURCE_SERVER/scripts/local-bridge-updater.mjs" --source "$SOURCE_SERVER" --target "$LOCAL_SERVER" --force --write-source-path UPDATE_EXIT=$? fi if [ $UPDATE_EXIT -ne 0 ] && [ $UPDATE_EXIT -ne 10 ] && [ $UPDATE_EXIT -ne 11 ]; then echo "Local package sync failed." read -p "Press Enter to close." exit 1 fi if [ $UPDATE_EXIT -eq 11 ]; then echo "No release manifest in source package. Using fallback copy..." mkdir -p "$LOCAL_SERVER" cp -R "$SOURCE_SERVER"/. "$LOCAL_SERVER" echo "$SOURCE_SERVER" > "$LOCAL_SERVER/.prooflab-source-path" fi SCRIPT_DIR="$LOCAL_SERVER" cd "$SCRIPT_DIR" SYNCED_TO_LOCAL=true else echo "" echo "[2/6] Local package already in use. Sync skipped." fi echo "" if [ -n "$SOURCE_SERVER" ]; then echo "[3/6] Syncing local ProofLab core runtime..." CORE_SOURCE="$(cd "$(dirname "$SOURCE_SERVER")" && pwd)" CORE_UPDATE_EXIT=11 if [ -f "$SCRIPT_DIR/scripts/local-core-updater.mjs" ]; then mkdir -p "$LOCAL_CORE" node "$SCRIPT_DIR/scripts/local-core-updater.mjs" --source "$CORE_SOURCE" --target "$LOCAL_CORE" --force --write-source-path CORE_UPDATE_EXIT=$? fi if [ $CORE_UPDATE_EXIT -eq 11 ]; then if [ -d "$CORE_SOURCE/src" ]; then mkdir -p "$LOCAL_CORE/src" cp -R "$CORE_SOURCE/src"/. "$LOCAL_CORE/src"/ mkdir -p "$LOCAL_CORE/macos" if [ -f "$CORE_SOURCE/macos/prooflab_hotkeys.lua" ]; then cp "$CORE_SOURCE/macos/prooflab_hotkeys.lua" "$LOCAL_CORE/macos/prooflab_hotkeys.lua" fi echo "$CORE_SOURCE" > "$LOCAL_CORE/.prooflab-core-source-path" echo "Core manifest missing. Applied fallback core copy." else echo "Core source unavailable. Skipping core runtime sync." fi elif [ $CORE_UPDATE_EXIT -ne 0 ] && [ $CORE_UPDATE_EXIT -ne 10 ]; then echo "Core runtime sync failed." read -p "Press Enter to close." exit 1 fi else echo "[3/6] Core runtime sync skipped (no source package path)." fi echo "" echo "[4/6] Installing dependencies..." npm install if [ $? -ne 0 ]; then echo "npm install failed." read -p "Press Enter to close." exit 1 fi echo "" echo "[5/6] Building picker UI..." npm run picker:build if [ $? -ne 0 ]; then echo "Picker build failed." read -p "Press Enter to close." exit 1 fi echo "" echo "[6/6] Configuring PDB token..." node scripts/setup-pdb-token.mjs if [ $? -ne 0 ]; then echo "Token setup failed or was cancelled." read -p "Press Enter to close." exit 1 fi echo "" echo "============================================" echo "Setup complete!" echo "============================================" echo "" if [ "$SYNCED_TO_LOCAL" = true ]; then echo "To start the bridge: open $LOCAL_SERVER and double-click start-pdb-bridge.command" else echo "To start the bridge: double-click start-pdb-bridge.command" fi echo "Picker URL: http://127.0.0.1:4311/picker" echo "" read -p "Press Enter to close."