#!/usr/bin/env bash # Script: sync-marketplace.sh # Purpose: Sync all plugins to marketplace.json registry # Usage: ./sync-marketplace.sh # This ensures marketplace.json is up-to-date with all plugins set -euo pipefail # Find script location and navigate to marketplace root SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MARKETPLACE_ROOT="$(cd "$SCRIPT_DIR/../../../../.." && pwd)" cd "$MARKETPLACE_ROOT" MARKETPLACE_FILE=".claude-plugin/marketplace.json" BACKUP_FILE=".claude-plugin/marketplace.json.backup" echo "[INFO] Syncing plugins to marketplace.json in: $MARKETPLACE_ROOT" # Find all plugins with plugin.json PLUGINS=() PLUGIN_JSON_FILES=$(find plugins -path "*/.claude-plugin/plugin.json" -type f | sort) for plugin_json in $PLUGIN_JSON_FILES; do PLUGIN_DIR=$(dirname "$(dirname "$plugin_json")") PLUGIN_NAME=$(basename "$PLUGIN_DIR") # Read plugin.json data DESCRIPTION=$(python3 -c "import json; print(json.load(open('$plugin_json'))['description'])" 2>/dev/null || echo "No description") VERSION=$(python3 -c "import json; print(json.load(open('$plugin_json'))['version'])" 2>/dev/null || echo "1.0.0") # Extract author if exists AUTHOR_NAME=$(python3 -c "import json; d=json.load(open('$plugin_json')); print(d.get('author', {}).get('name', 'vanman2024'))" 2>/dev/null || echo "vanman2024") AUTHOR_EMAIL=$(python3 -c "import json; d=json.load(open('$plugin_json')); print(d.get('author', {}).get('email', 'noreply@ai-dev-marketplace.dev'))" 2>/dev/null || echo "noreply@ai-dev-marketplace.dev") # Extract keywords if exists KEYWORDS=$(python3 -c "import json; d=json.load(open('$plugin_json')); print(','.join(['\"' + k + '\"' for k in d.get('keywords', [])]))" 2>/dev/null || echo "") # Build plugin entry PLUGIN_ENTRY=$(cat < "$MARKETPLACE_FILE" < "${MARKETPLACE_FILE}.tmp" && mv "${MARKETPLACE_FILE}.tmp" "$MARKETPLACE_FILE" echo "✅ Updated marketplace.json with $PLUGIN_COUNT plugins" # Show summary echo "" echo "Registered plugins in marketplace:" for plugin_json in $PLUGIN_JSON_FILES; do PLUGIN_DIR=$(dirname "$(dirname "$plugin_json")") PLUGIN_NAME=$(basename "$PLUGIN_DIR") VERSION=$(python3 -c "import json; print(json.load(open('$plugin_json'))['version'])" 2>/dev/null || echo "1.0.0") echo " - $PLUGIN_NAME (v$VERSION)" done