CLI (erp-preflight)
Der Kommandozeilen-Client erp-preflight: Installation, Anmeldung per API-Schlüssel, Befehle, Optionen, Umgebungsvariablen und Exit-Codes.
Inhalt geprüft am 26. September 2026
Installation
Die CLI ist das Paket @erppreflight/cli (Verzeichnis packages/cli): ein einzelnes Node.js-Skript ohne Abhängigkeiten, das die REST-API von ERP Preflight aufruft. Analysen laufen immer auf dem Server mit den deterministischen Engines; die CLI wertet nie selbst Regeln aus. Sie benötigt Node.js 18 oder neuer, weil sie das eingebaute fetch verwendet.
Das Paket ist nicht in der öffentlichen npm-Registry veröffentlicht. Aus einer Kopie des Paketverzeichnisses installieren Sie es global oder rufen das Skript direkt auf:
npm install -g ./packages/cli # stellt erp-preflight und erp-preflight-mcp bereit
node packages/cli/bin/erp-preflight.js --helpKonfiguration und Anmeldung
Die CLI authentifiziert sich mit einem API-Schlüssel der Organisation, den sie als X-Api-Key sendet.
erp-preflight login --key erppf_live_… --api-url https://api.example.com
erp-preflight statuslogin prüft den Schlüssel, indem es die Projekte auflistet (der Schlüssel braucht projects:read), und speichert Schlüssel und URL in ~/.erppreflight/config.json — angelegt mit Dateimodus 0600 in einem Verzeichnis mit Modus 0700. status zeigt die Betriebsbereitschaft der API und ob ein Schlüssel konfiguriert ist.
- API-URL:
--api-url, sonstERP_PREFLIGHT_API_URL, sonst die vonlogingespeicherte URL, sonsthttp://localhost:3001. Fehlt/api/v1, wird es angehängt. - API-Schlüssel:
ERP_PREFLIGHT_API_KEY, sonst der vonlogingespeicherte Schlüssel. Setzen Sie in CI die Umgebungsvariable, stattloginauszuführen. - Konfigurationsverzeichnis:
ERP_PREFLIGHT_CONFIG_DIRersetzt~/.erppreflight.
Befehle
erp-preflight login --key <api_key> [--api-url <url>]
erp-preflight status
erp-preflight project list
erp-preflight project create --name <name> [--release S4H_2023] [--description <text>]
erp-preflight upload <projectId> <file> [file ...]
erp-preflight analyze <projectId> --engines <E1,E2> [--files <id,...>] [--release <release>] [--wait] [--timeout 600] [--fail-on <severities>]
erp-preflight analyze <alias> <path ...> --project <projectId> [--wait] [--timeout 600] [--fail-on <severities>]
erp-preflight findings <projectId> | --analysis <analysisId> [--severity <severity>] [--fail-on <severities>]
erp-preflight report export <projectId> <analysisId> [--format PDF] [--out <file>]
erp-preflight report download <analysisId> [--out <file>]
erp-preflight versionproject createbenötigt den Scopeprojects:write, den in der Web-App angelegte Schlüssel nicht haben.uploadschickt jede Datei durch die serverseitigen Upload-Prüfungen (Dateityp, Archivgrenzen, Malware-Scan, Schwärzung von Geheimnissen) und gibt Datei-ID, Status und Anzahl der Schwärzungen aus, mit--jsonzusätzlich den SHA-256 der lokalen Datei. Endet eine Datei nicht alsCLEAN, schlägt der Befehl fehl.report exporterzeugt einen Bericht —PDF(Standard),XLSX,CSV,JSON_BUNDLEoderHTML_OFFLINE—, speichert ihn unter--outoder dem vom Server gelieferten Dateinamen und gibt seinen SHA-256 aus.report downloadspeichert das Reproduzierbarkeits-Bundle eines Laufs als ZIP-Datei.
Wie Sie Tools von ERP Preflight aus einem Coding-Agenten nutzen, steht unter MCP-Server.
Analysen ausführen
analyze <projectId> startet die in --engines genannten Engines — Engine-Typen wie OPD_GUARD oder die Aliasse unten — auf den Dateien aus --files, andernfalls auf allen CLEAN-Artefakten des Projekts. Ohne --wait endet der Befehl, sobald der Lauf eingereiht ist, und gibt dessen ID aus.
Mit --wait fragt die CLI alle 2 Sekunden den Status ab, bis der Lauf COMPLETED, PARTIAL, FAILED oder CANCELLED ist, höchstens --timeout Sekunden lang (Standard 600). Danach gibt sie die Befunde aus — Schweregrad, Regel, Konfidenz, Titel und Fundstelle der Evidenz; die Tabelle zeigt die ersten 200 — und wendet --fail-on an (siehe CI-Integration).
analyze <alias> <path ...> --project <projectId> lädt lokale Dateien hoch und startet die passende Engine in einem Schritt. Aliasse: clean-core (CLEAN_CORE_OBJECT_GUARD), api-diff (API_CHANGE_GUARD), mfs (MFS_BLACKBOX), opd (OPD_GUARD), forms (FORM_DOCTOR) und transports (TRANSPORT_DEPENDENCY_ANALYZER). Verzeichnisse werden rekursiv durchsucht, ohne .git und node_modules, und zwar nach Dateien mit den Endungen .abap, .prog, .incl, .xml, .xsd, .json, .csv, .edmx, .wsdl oder .xdp — den analysierbaren Typen, die die Upload-Prüfung annimmt. Archive, PDFs und Textdateien werden nur hochgeladen, wenn Sie sie ausdrücklich angeben.
findings <projectId> listet die Befunde aller Läufe des Projekts einschließlich früherer Erkennungen, findings --analysis <analysisId> die eines einzelnen Laufs. --severity CRITICAL behält Befunde dieses und höherer Schweregrade.
Ausgabe, Optionen und Exit-Codes
--jsongibt maschinenlesbares JSON statt Tabellen aus. Beianalyze --waitenthält es die Lauf-ID (analysisId), Status, Engines, Anzahl der Dateien, eine Zusammenfassung nach Schweregrad und alle Befunde.--http-timeout <seconds>legt das Timeout jeder HTTP-Anfrage fest (Standard 60).- Setzen Sie Optionen ohne Wert wie
--waitund--jsonhinter die Positionsargumente: Folgt auf eine Option ein Wort, das nicht mit--beginnt, gilt es als deren Wert.
Exit-Codes:
0— Erfolg.1— Fehler: API- oder Netzwerkfehler, eine von den Upload-Prüfungen abgewiesene oder in Quarantäne gestellte Datei, keineCLEAN-Artefakte, ein mitFAILEDoderCANCELLEDbeendeter Lauf oder ein Timeout von--wait.2— Aufruf oder Authentifizierung: fehlende Argumente, unbekannter Befehl, Datei nicht gefunden, kein API-Schlüssel konfiguriert oder HTTP 401/403 von der API (etwa ein fehlender Scope).3— Qualitätstor verletzt (--fail-on).