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>
This commit is contained in:
Dieter Schlüter 2026-10-15 06:12:42 +02:00
commit d2e83daa98
3 changed files with 25 additions and 7 deletions

View file

@ -96,9 +96,14 @@ Das Install-Skript sichert eine vorhandene `~/.pi/agent/settings.json` als `.bak
kopiert dann `settings.json` aus dem Repo. Damit ist der korrekte Default-Provider
(`llama-cpp-single/coding_model`) automatisch konfiguriert.
Nach späteren Änderungen an `pi-coding-extension.ts` oder `models.json`:
Die Extension wird nicht kopiert, sondern verlinkt
(`~/.pi/agent/extensions/pi-coding-extension.ts` → Repo). Änderungen an `pi-coding-extension.ts` gelten
damit für jeden pi-Aufruf ab dem nächsten Start bzw. `/reload`, ohne erneutes Deploy. Das gilt auch für noch
nicht committete Änderungen.
Nach späteren Änderungen an `models.json` oder `settings.json`:
```bash
./deploy-pi-config.sh # kopiert nach ~/.pi/agent/
./deploy-pi-config.sh # verlinkt die Extension, kopiert models.json, settings.json (nur packages)
# dann /reload in pi agent
```
@ -259,7 +264,7 @@ und Extension-Guards gegen Regressionen.
| `start-coding-server.sh` | Single-Server starten (Port 8001, Coder + Judge) |
| `stop-coding-server.sh` | Container stoppen |
| `status-coding-server.sh` | Laufstatus anzeigen |
| `deploy-pi-config.sh` | Extension + models.json + settings.json nach `~/.pi/agent/` deployen |
| `deploy-pi-config.sh` | Extension nach `~/.pi/agent/extensions/` verlinken, models.json + settings.json kopieren |
| `examples/` | Demo-Projekte (Python, Rust, Go, C, Bash, HTML/JS) für Live-Demos |
| `examples/restore-all.sh` | Examples nach Demo-Lauf in Ausgangszustand zurücksetzen |

View file

@ -1,13 +1,20 @@
#!/usr/bin/env bash
# Kopiert die versionierten Dateien aus dem Repo nach ~/.pi/agent/.
# Nach jeder Änderung im Repo ausführen, damit pi agent die neue Version lädt.
# 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
cp "$REPO/pi-coding-extension.ts" ~/.pi/agent/extensions/pi-coding-extension.ts
echo "Kopiert: pi-coding-extension.ts → ~/.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/"

View file

@ -44,3 +44,9 @@ test("install-Skript deployt settings.json mit vorherigem Backup", () => {
assert.match(s, /cp "\$REPO\/models\.json"/);
assert.match(s, /pi-coding-extension\.ts/);
});
test("install-Skript verlinkt die Extension statt sie zu kopieren", () => {
const s = readRepoFile("deploy-pi-config.sh");
assert.match(s, /ln -sfn "\$REPO\/pi-coding-extension\.ts" "\$EXT"/);
assert.doesNotMatch(s, /cp "\$REPO\/pi-coding-extension\.ts"/, "cp auf den Symlink bricht mit 'same file' ab");
});