Wenn Sie Regeln lokal entwickeln, zum Beispiel mit der VS-Code-Extension oder direkt in einem Texteditor, können Sie sie mit codecharter push ins Portal hochladen. Der Befehl durchsucht ein Verzeichnis nach .ccr-Dateien, lädt sie als Regel-Entwürfe hoch und legt einen Profil-Entwurf im Portal an, ohne die aktuell veröffentlichte Version zu berühren. Hat eine Regel oder das Profil bereits einen offenen Entwurf im Portal, bricht der Push mit einem Konflikt ab, statt ihn zu überschreiben.
Voraussetzungen
Sie brauchen:
- Eine CodeCharter-CLI mit dem
push-Befehl. Prüfen Sie die installierte Version mitcodecharter --version. Für ein Upgrade lesen Sie den Abschnitt Downloads. - Einen Zugang zum Portal: entweder ein installiertes
codecharter.license(Standardfall, keine weitere Option nötig) oder einen API-Key mit dem Rechtwrite:rules, den Sie über die Option--api-keyübergeben (Sie können den Key in einer Umgebungsvariable ablegen und auf der Kommandozeile übergeben, wie in den Beispielen unten) - Eine
.ccr-Datei pro Regel, optional eine gleichnamige.spec.mddaneben
Verzeichnisstruktur
codecharter push arbeitet auf einem Verzeichnis und durchsucht es rekursiv nach .ccr-Dateien:
rules/
no-async-void.ccr
no-async-void.spec.md
max-method-length.ccr
Kanonische Verwendung
codecharter push ./rules \
--profile my-team-rules \
--version 1.0.0 \
--portal-url https://codecharter.tools \
--api-key $CODECHARTER_API_KEY
Das durchsucht ./rules rekursiv nach .ccr-Dateien. Der Regel-Slug wird aus dem Dateinamen abgeleitet (ohne die Endung .ccr), also wird aus no-async-void.ccr der Slug no-async-void. Eine gleichnamige .spec.md-Datei wird automatisch mit hochgeladen. Der Lauf erstellt den Profil-Entwurf my-team-rules@1.0.0 aus diesen Regeln. Hat das Profil bereits einen offenen Entwurf, schlägt der Push mit einem Konflikt fehl, damit keine laufende Arbeit überschrieben wird.
--portal-url und --api-key sind hier nur zur Veranschaulichung gesetzt: --portal-url fällt ohne Angabe auf das gehostete Portal zurück, und --api-key fällt ohne Angabe auf die installierte codecharter.license zurück.
Bei Erfolg gibt die CLI eine Zusammenfassung aus, an der Sie den Lauf prüfen können:
Pushed 2 of 2 rule(s); profile draft 'my-team-rules@1.0.0' created.
Die Regeldatei braucht keinen Deklarationsblock: Der Slug kommt aus dem Dateinamen, der Schweregrad aus der @severity-Direktive in der Regeldatei (Standard: warn, falls die Direktive fehlt). codecharter push lädt den Dateiinhalt unverändert hoch; die Direktive wirkt, wenn die Regel geladen wird.
Trockenlauf
codecharter push ./rules \
--profile my-team-rules \
--version 1.0.0 \
--portal-url https://codecharter.tools \
--api-key $CODECHARTER_API_KEY \
--dry-run
--dry-run listet die Regeln und den Profil-Entwurf auf, die gepusht würden, ohne etwas hochzuladen. Nützlich zur Kontrolle, bevor Sie echte Entwürfe öffnen.
Optionen
| Option | Pflicht | Beschreibung |
|---|---|---|
--profile <slug> |
ja | Der Profil-Slug, der angelegt oder aktualisiert werden soll. |
--version <semver> |
ja | Semantische Versionsnummer des Profil-Entwurfs (z.B. 1.0.0). |
--portal-url <url> |
nein | URL des CodeCharter-Portals. Ohne Angabe wird das gehostete Portal verwendet; nur für ein selbst gehostetes Portal setzen. |
--api-key <key> |
nein | API-Key zur Authentifizierung gegenüber dem Portal (benötigt den Scope write:rules). Ohne Angabe wird die installierte Lizenz verwendet. |
--license <pfad> |
nein | Pfad zu einer codecharter.license-Datei, überschreibt die Standard-Suche. |
--dry-run |
nein | Zeigt Aktionen ohne Upload. |
Exit-Codes
| Code | Bedeutung |
|---|---|
0 |
Alle Entwürfe erfolgreich angelegt (oder Trockenlauf abgeschlossen). |
1 |
Eine Regel oder das Profil hat bereits einen konfliktierenden Entwurf. |
2 |
Bedienfehler, E/A-Fehler oder Netzwerkfehler. |
Nach dem Push
Nach einem erfolgreichen push erscheint die Regel im Portal unter /rules mit dem Entwurf-Badge. Von dort können Sie:
- die Spec im Portal ausführen (Specs ausführen)
- eine neue Version veröffentlichen (Veröffentlichen)
Ein Push veröffentlicht nie selbst. Das bleibt bewusst ein manueller Schritt im Portal.
Hat eine gepushte Regel noch keine veröffentlichte Version, verweist der Profil-Entwurf auf den Regel-Entwurf und die CLI warnt:
warning: rule 'no-async-void' has no published version yet; profile references the draft.
Häufige Fehler
Konfliktierender Entwurf
error: Rule 'no-async-void' already has a draft. Discard or publish it first.
error: Profile 'my-team-rules' already has a draft. Discard or publish it first.
Eine Regel oder das Profil hat bereits einen offenen Entwurf im Portal. Verwerfen oder veröffentlichen Sie diesen Entwurf im Portal und pushen Sie dann erneut. Der Befehl endet mit Exit-Code 1.
Kein Portal-Zugang
error: no portal credential available. Pass --api-key, set CODECHARTER_API_KEY, or install a codecharter.license (point at it with --license).
Weder ein API-Key noch eine gültige installierte Lizenz sind verfügbar. Übergeben Sie einen API-Key mit --api-key, setzen Sie die Umgebungsvariable CODECHARTER_API_KEY, oder installieren Sie eine codecharter.license (bei einem abweichenden Speicherort mit --license darauf verweisen). Der Befehl endet mit Exit-Code 2.
Keine Regeldateien gefunden
error: no rule files (.ccr) found in './rules'.
Das Verzeichnis enthält keine unterstützten Regeldateien (.ccr, oder das veraltete .cgr; die Suche ist rekursiv). Prüfen Sie den übergebenen Pfad. Der Befehl endet mit Exit-Code 2.
Portal lehnt die Anfrage ab
error: portal returned 401 Unauthorized for rule 'no-async-void'.
Das Portal hat den Upload abgelehnt. Prüfen Sie, ob der verwendete API-Key oder die installierte Lizenz gültig und nicht abgelaufen ist und ob --portal-url auf das richtige Portal zeigt. Der Befehl endet mit Exit-Code 2.