Entwicklung

CLI-Automatisierungsvertrag

Erstelle zuverlässige Skripte mit versioniertem JSON, deterministischen Eingaben und stabilen Fehler- und Exit-Codes.

  • --json
  • --yes
  • schema_version: 1
--jsonGibt genau einen Umschlag der Schemaversion 1 auf stdout aus.
--yesNutzt deterministische Standards und bestätigt Kosten, geprüfte Synchronisierung, Ersetzungen und Überschreiben. Fehlende Auswahl endet mit input_required.
stdout und stderrMaschinenlesbare Ergebnisse gehen an stdout, Diagnose und Fortschritt an stderr.
AnmeldedatenTokens werden nie als JSON zurückgegeben und sollten über geschützte Umgebungsvariablen bereitgestellt werden.
Erfolgsumschlag
{
  "schema_version": 1,
  "ok": true,
  "command": "project.bindings",
  "result": { "bindings": [] }
}
Fehlerumschlag
{
  "schema_version": 1,
  "ok": false,
  "command": "operation.start",
  "error": {
    "code": "input_required",
    "message": "...",
    "details": {}
  }
}

Referenz

Stabile Exit- und Fehlercodes

Nutze den Prozessstatus für grobe Behandlung und den JSON-Fehlercode für gezielte Wiederherstellung.

ExitStabiler CodeBedeutung
0successDer Befehl wurde erfolgreich abgeschlossen oder eine interaktive Auswahl vor Arbeitsbeginn abgebrochen.
1internal_failure / command_failedEin unerwarteter oder befehlsspezifischer Fehler ist aufgetreten.
2invalid_usageArgumente oder Befehlsverwendung sind ungültig.
3authentication_failedAuthentifizierung fehlt, ist abgelaufen oder wurde abgelehnt.
4input_requiredEine Pflichtangabe war bei nichtinteraktiver Ausführung nicht verfügbar.
5local_failureLokale Datei, Werkzeug, Konfiguration oder Dateisystemaktion ist fehlgeschlagen.
6gateway_failureDas Gateway war nicht erreichbar oder lieferte eine ungültige Antwort.
7remote_rejectionDer Remotedienst hat eine gültige Anfrage abgelehnt.
8operation_failedDie Operation hat einen fehlgeschlagenen oder abgebrochenen Endzustand erreicht.
130interruptedDer Prozess wurde unterbrochen; angenommene Serverarbeit wird nicht automatisch abgebrochen.

Befehlsergebnisse

Felder je Befehl

Felder werden in Schemaversion 1 nur ergänzt. Unbekannte Felder sollten ignoriert werden.

BefehlErgebnisfelderHinweise
login / statusapi_url, user_id, credential_sourceAuthentifizierungsdaten ohne Offenlegung des Tokens.
logoutapi_url, stored_token_removed, environment_authentication_activeMeldet Entfernung des gespeicherten Tokens und verbleibende Umgebungsanmeldung.
project.bindbinding | cancelled, pathGibt die Bindung oder einen Abbruch durch den Benutzer zurück.
project.forgetpath, removed[], cancelledBezeichnet entfernte Bindungen und einen möglichen Abbruch.
project.bindingsbindings[]Gibt alle passenden lokalen Bindungen zurück.
project.syncbinding, mode, path, preview, applied, summary, media[], cancelledEnthält Vorschau/Anwendung, Zusammenfassung, Medienänderungen und Abbruch.
operation.startcancelled, path, project_id, operation_id, status, lifecycle_status, detached, output_target, remove_track, sources_accepted, required_credits, available_credits, outputs[], applied_tracks, skipped_tracks, removed_tracksBezeichnet die Operation und ob die Ausführung getrennt wurde.
operation.watchoperation_id, project_id, status, lifecycle_status, progress_status, failures[], local_output_pendingMeldet Lebenszyklus, Fortschritt, Fehler und ausstehende lokale Ausgabe.
operation.applycancelled, path, operation_id, project_id, status, output_target, remove_track, partial, outputs[], applied_tracks, skipped_tracks, removed_tracksMeldet geschriebene Ausgaben, Spuraktionen und Zustand von Teilergebnissen.

Deterministische Eingabe

--json kann weiterhin auf stderr fragen. Ergänze --yes, um Rückfragen abzuschalten, und liefere jede nichtdeterministische Auswahl über Optionen, Konfiguration oder geschützte Umgebungsvariablen.

subft --json --yes operation start PATH --lang de --project-id PROJECT_ID --detach

Abbruch und Teilergebnisse

Interaktiver Abbruch endet vor dem Commit mit Exit 0 und cancelled: true. Ctrl-C endet mit 130, ohne angenommene Serverarbeit abzubrechen. Mit --yes brauchen unvollständige Ausgaben --allow-partial; nach dem Anwenden verfügbarer Spuren bleibt der Exitcode ungleich null.

subft --json --yes operation apply OPERATION_ID PATH --allow-partial