pi_coder_2/deploy-pi-config.sh
dschlueter d2e83daa98 feat: deploy-pi-config.sh verlinkt die Extension statt sie zu kopieren
Änderungen an pi-coding-extension.ts gelten damit für jeden pi-Aufruf ab dem
nächsten Start bzw. /reload, ohne erneutes Deploy.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 06:12:42 +02:00

38 lines
1.8 KiB
Shell
Executable file

#!/usr/bin/env bash
# Verlinkt die Extension und kopiert models.json/settings.json aus dem Repo nach ~/.pi/agent/.
# Die Extension ist ein Symlink: Änderungen im Repo gelten ab dem nächsten pi-Start bzw. /reload.
# Erneut ausführen nur nach Änderungen an models.json oder settings.json.
set -euo pipefail
REPO="$(cd "$(dirname "$0")" && pwd)"
mkdir -p ~/.pi/agent/extensions
# A previous, differing copy is kept as .bak before it is replaced by the symlink.
EXT=~/.pi/agent/extensions/pi-coding-extension.ts
if [ -f "$EXT" ] && [ ! -L "$EXT" ] && ! cmp -s "$EXT" "$REPO/pi-coding-extension.ts"; then
cp "$EXT" "$EXT.bak"
echo "Backup: pi-coding-extension.ts → pi-coding-extension.ts.bak"
fi
ln -sfn "$REPO/pi-coding-extension.ts" "$EXT"
echo "Verlinkt: ~/.pi/agent/extensions/pi-coding-extension.ts → $REPO/pi-coding-extension.ts"
cp "$REPO/models.json" ~/.pi/agent/models.json
echo "Kopiert: models.json → ~/.pi/agent/"
# settings.json: nur die 'packages'-Liste aktualisieren, alle anderen Nutzer-Einstellungen
# (defaultProvider, defaultModel, enabledModels, …) bleiben unberührt.
# Grund: pi schreibt Modell-Auswahl und weitere Präferenzen in diese Datei — ein vollständiges
# Überschreiben würde sie bei jedem Deploy löschen.
PACKAGES=$(jq '.packages' "$REPO/settings.json")
if [ -f ~/.pi/agent/settings.json ]; then
cp ~/.pi/agent/settings.json ~/.pi/agent/settings.json.bak
echo "Backup: settings.json → settings.json.bak"
jq --argjson p "$PACKAGES" '.packages = $p' ~/.pi/agent/settings.json > /tmp/pi_settings_merge.json \
&& mv /tmp/pi_settings_merge.json ~/.pi/agent/settings.json
else
cp "$REPO/settings.json" ~/.pi/agent/settings.json
fi
echo "Aktualisiert: settings.json (nur packages-Feld) → ~/.pi/agent/"
echo ""
echo "Fertig. Bitte /reload in pi agent ausführen."