#!/usr/bin/env bash
# Update all installed Claude Code plugins daily.
# Runs via systemd timer. Logs to syslog.

set -euo pipefail

LOG_PREFIX="[plugin-updater]"

log() { echo "$LOG_PREFIX $*"; }

# Get list of installed plugins from the JSON
PLUGINS_FILE="$HOME/.claude/plugins/installed_plugins.json"
if [ ! -f "$PLUGINS_FILE" ]; then
    log "No installed_plugins.json found — nothing to update"
    exit 0
fi

# Extract plugin identifiers (format: name@marketplace)
PLUGINS=$(python3 -c "
import json, sys
data = json.load(open('$PLUGINS_FILE'))
for key in data.get('plugins', {}):
    print(key)
" 2>/dev/null)

if [ -z "$PLUGINS" ]; then
    log "No plugins installed"
    exit 0
fi

UPDATED=0
FAILED=0

for plugin in $PLUGINS; do
    log "Checking update for: $plugin"
    if claude plugins update "$plugin" 2>&1; then
        log "Updated: $plugin"
        UPDATED=$((UPDATED + 1))
    else
        # Exit code 1 usually means "already up to date"
        log "No update available or failed: $plugin"
        FAILED=$((FAILED + 1))
    fi
done

log "Done — $UPDATED updated, $FAILED unchanged/failed"
