From: b3nj4m1n Date: Wed, 14 Dec 2022 21:06:45 +0000 (+0100) Subject: Add json schema validation github action X-Git-Tag: v0.2.0.2~112 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/xdg-ninja.git/commitdiff_plain/3912631ac1beed5871096a2a1b18f4a5147aabe6?ds=inline Add json schema validation github action --- diff --git a/.github/workflows/json_schema.yml b/.github/workflows/json_schema.yml new file mode 100644 index 0000000..d8bca9e --- /dev/null +++ b/.github/workflows/json_schema.yml @@ -0,0 +1,23 @@ +name: Validate JSON + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + validate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Validate JSON + uses: walbo/validate-json@v1.1.0 + with: + files: programs/*.json + schema: json-schema/program.json + schema-version: draft-07 + fail-on-missing-schema: true + strict: true diff --git a/json-schema/file.json b/json-schema/file.json deleted file mode 100644 index 1a3e217..0000000 --- a/json-schema/file.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "File schema", - "properties": { - "path": { - "type": "string", - "description": "Path to file (or folder).", - "minLength": 1 - }, - "movable": { - "type": "boolean", - "description": "Is file (or folder) movable to a place other than $HOME." - }, - "help": { - "type": "string", - "description": "Help text for user. Supports markdown." - } - }, - "required": [ - "path", - "movable", - "help" - ] -} \ No newline at end of file diff --git a/json-schema/program.json b/json-schema/program.json index d569273..1fcf2d7 100644 --- a/json-schema/program.json +++ b/json-schema/program.json @@ -1,7 +1,7 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", "title": "Program", "description": "Specification of files or folders in the $HOME folder for a program", + "type": "object", "properties": { "name": { "type": "string", @@ -12,7 +12,27 @@ "description": "List of files (or folders) associated with the program", "type": "array", "items": { - "$ref": "file.json" + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Path to file (or folder).", + "minLength": 1 + }, + "movable": { + "type": "boolean", + "description": "Is file (or folder) movable to a place other than $HOME." + }, + "help": { + "type": "string", + "description": "Help text for user. Supports markdown." + } + }, + "required": [ + "path", + "movable", + "help" + ] }, "minItems": 1 } @@ -21,4 +41,4 @@ "name", "files" ] -} \ No newline at end of file +}