Add GitHub Action to validate apps.json against schema.json

Signed-off-by: kingthorin <kingthorin@users.noreply.github.com>
main
kingthorin 5 years ago
parent b93fb690d4
commit 1dc00388a2

@ -0,0 +1,32 @@
name: JSON Schema Check
on:
pull_request:
branches:
- master
paths:
- 'src/apps.json'
jobs:
schema-check:
runs-on: ubuntu-latest
env:
CI: true
steps:
- name: Setup Action
uses: actions/checkout@v2
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: 13.x
- name: Install dependencies
run: npm install -g ajv-cli
- name: Run schema check
run: |
ajv validate -s schema.json -d src/apps.json
# - name: Upload list of broken links
# if: failure() && github.event_name == 'pull_request'
# uses: actions/upload-artifact@v1
# with:
# name: broken-links
# path: brokenlinks.txt

@ -2,18 +2,18 @@
"title": "Wappalyzer Schema",
"type": "object",
"additionalProperties": false,
"required": ["categories","apps"],
"properties": {
"$schema": {
"type": "string"
},
"categories": {
"type": "object",
"required": true,
"minProperties": 64,
"additionalProperties": false,
"patternProperties": {
"^[0-9]+$": {
"type": "object",
"required": true,
"properties": {
"priority": {
"type": "number"
@ -27,89 +27,136 @@
},
"apps": {
"type": "object",
"required": true,
"additionalProperties": {
"additionalProperties": false,
"required": ["cats","website"],
"properties": {
"cats": {
"type": "array",
"items": {
"type": "number"
},
"required": true
"minItems": 1
},
"cpe": {
"type": "string"
"type": "string",
"pattern": "^(?!\\s*$).+"
},
"cookies": {
"type": "object",
"additionalProperties": {
"type": "string"
"additionalProperties": false,
"patternProperties": {
"^.+$": {
},
"additionalProperties": {
"type": "string"
}
}
},
"js": {
"type": "object",
"additionalProperties": {
"type": "string"
"additionalProperties": false,
"patternProperties": {
"^.+$": {
},
"additionalProperties": {
"type": "string"
}
}
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
"additionalProperties": false,
"patternProperties": {
"^.+$": {
},
"additionalProperties": {
"type": "string"
}
}
},
"html": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^(?!\\s*$).+"
}
},
{
"type": "string",
"pattern": "^(?!\\s*$).+"
}
]
},
"excludes": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^(?!\\s*$).+"
}
},
{
"type": "string",
"pattern": "^(?!\\s*$).+"
}
]
},
"implies": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^(?!\\s*$).+"
}
},
{
"type": "string",
"pattern": "^(?!\\s*$).+"
}
]
},
"meta": {
"type": "object",
"additionalProperties": {
"type": "string"
"additionalProperties": false,
"patternProperties": {
"^.+$": {
},
"additionalProperties": {
"type": "string"
}
}
},
"script": {
"type": [
"string",
"array"
],
"items": {
"type": "string"
}
"oneOf": [
{
"type": "array",
"items": {
"type": "string",
"pattern": "^(?!\\s*$).+"
}
},
{
"type": "string",
"pattern": "^(?!\\s*$).+"
}
]
},
"url": {
"type": "string"
"type": "string",
"pattern": "^(?!\\s*$).+"
},
"website": {
"type": "string",
"required": true
"pattern": "^(?!\\s*$).+"
},
"icon": {
"type": "string"
"type": "string",
"pattern": "^(?!\\s*$).+"
}
}
}