#!/bin/bash # First-time setup for excalidraw-png-export skill. # Installs playwright and chromium headless into a dedicated directory. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" EXPORT_DIR="$SCRIPT_DIR/.export-runtime" if [ -d "$EXPORT_DIR/node_modules/playwright" ]; then echo "Runtime already installed at $EXPORT_DIR" exit 0 fi echo "Installing excalidraw-png-export runtime..." mkdir -p "$EXPORT_DIR" cd "$EXPORT_DIR" # Initialize package.json with ESM support cat > package.json << 'PACKAGEEOF' { "name": "excalidraw-export-runtime", "version": "1.0.0", "type": "module", "private": true } PACKAGEEOF npm install playwright 2>&1 npx playwright install chromium 2>&1 # canvas provides accurate text measurement for convert.mjs. # Requires Cairo native library: brew install pkg-config cairo pango libpng jpeg giflib librsvg # Falls back to heuristic sizing if unavailable. npm install canvas 2>&1 || echo "WARN: canvas install failed (missing Cairo?). Heuristic text sizing will be used." echo "Setup complete. Runtime installed at $EXPORT_DIR"