pithyx catalog check
pithyx catalog check ist die Pull-Request-Prüfung eines Katalog-Repositorys: Es prüft die Regeln aus catalog.v1.rules.json auf dem, was sich zwischen einem Basis-Commit und dem Checkout geändert hat, mit denselben Urteilen und Codes wie die Box. Starte es im Wurzelordner des Repositorys auf dem Stand des Pull Requests. Siehe In einem Katalog veröffentlichen.
pithyx catalog check --base <commit> --author <login> [--index <file>] [--allow-reserved-id]Optionen
Abschnitt betitelt „Optionen“| Option | Wert | Typ | Standard | Beschreibung |
|---|---|---|---|---|
--base |
<commit> |
string | Pflicht | In pithyx --help nicht beschrieben; siehe unten. |
--author |
<login> |
string | Pflicht | In pithyx --help nicht beschrieben; siehe unten. |
--index |
<file> |
string | – | In pithyx --help nicht beschrieben; siehe unten. |
--allow-reserved-id |
– | boolean | aus | In pithyx --help nicht beschrieben; siehe unten. |
--base <commit>: der Commit, auf dem der Pull Request aufsetzt. Die Änderungen sindgit diff --name-only --no-renames <base>...HEAD.--author <login>: der GitHub-Login des Autors des Pull Requests, geprüft gegen diemaintainers.jsonder App, wie sie im Basis-Commit war (bei einer neuen App gegen die Datei, die der Pull Request hinzufügt).--index <file>: dieindex.jsondes Branchescatalog-next. Ihre Versionen der App sind die veröffentlichten, über denen eine neue Version liegen muss. Ohne sie, oder wenn die Datei nicht existiert (vor der ersten Veröffentlichung), gilt nichts als veröffentlicht.--allow-reserved-id: erlaubtcatalog.jsoneine ID inorg.pithyx.*. Nur die Kataloge des Projekts nutzen das. Apps inorg.pithyx.*sind nur im Katalogorg.pithyx.officialerlaubt, mit und ohne diese Option.
Was es prüft
Abschnitt betitelt „Was es prüft“Zuerst catalog.json, dann für die geänderten Dateien: nur ein App-Ordner unter apps/, der Ordner heißt wie die ID der App, die Pflichtdateien, nur Text- und Mediendateien der erlaubten Arten (keine Binärdateien, nichts Minifiziertes), jedes FROM eines Dockerfiles per Digest gepinnt, Screenshots (PNG, JPEG oder WebP direkt in screenshots/, kleingeschriebene Namen, je höchstens 1 MB und insgesamt höchstens 8), höchstens 5 MB für den App-Ordner, eine von der OSI anerkannte Lizenz, die Manifest-Felder license und pithyx, eine Version über jeder veröffentlichten, ein gültiges Manifest, Icon und backend/compose.dev.yaml, und ein Autor, der Maintainer ist.
Dateien
Abschnitt betitelt „Dateien“| Datei | Zugriff |
|---|---|
catalog.json im aktuellen Ordner |
gelesen |
| die Git-Historie des aktuellen Ordners | gelesen mit git diff und git show |
jede Datei jedes geänderten App-Ordners unter apps/ |
gelesen |
die Datei aus --index |
gelesen |
--catalog gilt hier nicht: check liest immer catalog.json im aktuellen Ordner.
Exit-Codes
Abschnitt betitelt „Exit-Codes“| Code | Wann |
|---|---|
| 0 | The pull request passes the catalog rules. |
| 1 | Mindestens ein Befund, catalog.json ist ungültig, oder Git scheitert (zum Beispiel an einem unbekannten Basis-Commit). |
| 2 | --base oder --author fehlt. |
Befunde
Abschnitt betitelt „Befunde“Alles Fehler: store.catalog.rule_violation mit der Regel als rule (one_app, required_file, file_type, binary, minified, media, unpinned, screenshot, screenshots, app_size, folder_id, manifest_field, license, version_not_higher, maintainer, maintainers_invalid), die store.catalog.*-Codes von catalog.json und die app.*-Codes von Manifest, Icon und Compose-Quelle. Siehe Befunde.
Beispiele
Abschnitt betitelt „Beispiele“git fetch origin catalog-nextgit show origin/catalog-next:index.json > /tmp/index.jsonpithyx catalog check --base "$BASE_SHA" --author "$PR_AUTHOR" --index /tmp/index.json