Files
proxdeploy/docs/issues/013-cli.md
T
2026-10-12 15:08:42 +02:00

2.1 KiB
Raw Blame History

#013 CLI proxdeploy (Go)

Status: in Arbeit Meilenstein: v0.4.0 Labels: feature, cli Geschätzt: 12 h Tatsächlich: –

Ziel

Alle Befehle aus der Vorgabe, Ausgabe exakt im Format der Vorgabe.

Aufgaben

  • API-Tokens (pd_…, nur SHA-256 gespeichert, Ablauf, Widerruf) mit Bearer-Anmeldung, POST /auth/token für login, Verwaltung in den Einstellungen
  • Kurze Anfragen: Server füllt Storage, Bridge, Node, Benutzer, Schlüssel (anfrageErgaenzen), auch beim Template-Bau
  • Abschlussbox serverseitig (abschluss), Web und CLI zeigen dieselben Zeilen
  • OpenAPI aus zod (/api/v1/openapi.json, pnpm openapi), Go-Typen per oapi-codegen, pnpm cli:pruefen
  • login, servers, distros, profiles, presets, vm, lxc, template list/build, batch, status, logs --follow, cancel
  • Renderer: Farbe 24-bit/256/aus, --ascii, --quiet, --json, --dry-run; Golden-Tests
  • Release-Builds für linux/darwin/windows × amd64/arm64 (cli/bauen.sh)
  • Abnahme auf pve-demo (VM + LXC per batch)

Akzeptanzkriterien

  • Ausgabe entspricht zeichengenau dem Mockup (cli/internal/ausgabe/testdata/mockup.txt, von Hand aus der Vorgabe übernommen)

Abhängigkeiten

#008, #012

Notizen / Entscheidungen

  • Anfragen als Map, Antworten typisiert. oapi-codegen macht Pflichtfelder zu Nicht-Zeigern; Go schickte dann "storage": "" und überschriebe Vorlagenwerte. Deshalb gehen nur gesetzte Flags hinaus.
  • [instances.<name>] statt [profiles.<name>] in der Konfiguration – „profile“ ist schon --profile.
  • Strg+C hängt nur ab, der Auftrag läuft weiter; Abbruch ist proxdeploy cancel.
  • Ohne Terminal (Pipe, CI) kein Neuzeichnen: jede Phase eine Zeile, sobald fertig; die Kopfzeile nach der ersten Phase, weil Node und Template erst dann feststehen.
  • SSE-Ausfall: Wiederverbinden mit Last-Event-ID; nach drei Fehlschlägen ohne Stand Polling alle 2 s.
  • Go 1.27.2 ohne sudo unter ~/.local/go; Bibliotheken mit abgelagerten Versionen (x/term 0.46.0, go-runewidth 0.0.30 statt der wenige Tage alten Nachfolger).