@@ -3,6 +3,8 @@ version: "3"
33
44vars :
55 PYTHON_PROJECT_PATH : compilesketches
6+ # Last version of ajv-cli with support for the JSON schema "Draft 4" specification
7+ SCHEMA_DRAFT_4_AJV_CLI_VERSION : 3.3.0
68
79tasks :
810 check :
@@ -261,6 +263,70 @@ tasks:
261263 cmds :
262264 - npm install
263265
266+ # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-npm-task/Taskfile.yml
267+ npm:validate :
268+ desc : Validate npm configuration files against their JSON schema
269+ vars :
270+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/package.json
271+ SCHEMA_URL : https://json.schemastore.org/package.json
272+ SCHEMA_PATH :
273+ sh : task utility:mktemp-file TEMPLATE="package-json-schema-XXXXXXXXXX.json"
274+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/ava.json
275+ AVA_SCHEMA_URL : https://json.schemastore.org/ava.json
276+ AVA_SCHEMA_PATH :
277+ sh : task utility:mktemp-file TEMPLATE="ava-schema-XXXXXXXXXX.json"
278+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/eslintrc.json
279+ ESLINTRC_SCHEMA_URL : https://json.schemastore.org/eslintrc.json
280+ ESLINTRC_SCHEMA_PATH :
281+ sh : task utility:mktemp-file TEMPLATE="eslintrc-schema-XXXXXXXXXX.json"
282+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/jscpd.json
283+ JSCPD_SCHEMA_URL : https://json.schemastore.org/jscpd.json
284+ JSCPD_SCHEMA_PATH :
285+ sh : task utility:mktemp-file TEMPLATE="jscpd-schema-XXXXXXXXXX.json"
286+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/npm-badges.json
287+ NPM_BADGES_SCHEMA_URL : https://json.schemastore.org/npm-badges.json
288+ NPM_BADGES_SCHEMA_PATH :
289+ sh : task utility:mktemp-file TEMPLATE="npm-badges-schema-XXXXXXXXXX.json"
290+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/prettierrc.json
291+ PRETTIERRC_SCHEMA_URL : https://json.schemastore.org/prettierrc.json
292+ PRETTIERRC_SCHEMA_PATH :
293+ sh : task utility:mktemp-file TEMPLATE="prettierrc-schema-XXXXXXXXXX.json"
294+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/semantic-release.json
295+ SEMANTIC_RELEASE_SCHEMA_URL : https://json.schemastore.org/semantic-release.json
296+ SEMANTIC_RELEASE_SCHEMA_PATH :
297+ sh : task utility:mktemp-file TEMPLATE="semantic-release-schema-XXXXXXXXXX.json"
298+ # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/stylelintrc.json
299+ STYLELINTRC_SCHEMA_URL : https://json.schemastore.org/stylelintrc.json
300+ STYLELINTRC_SCHEMA_PATH :
301+ sh : task utility:mktemp-file TEMPLATE="stylelintrc-schema-XXXXXXXXXX.json"
302+ INSTANCE_PATH : " **/package.json"
303+ PROJECT_FOLDER :
304+ sh : pwd
305+ WORKING_FOLDER :
306+ sh : task utility:mktemp-folder TEMPLATE="dependabot-validate-XXXXXXXXXX"
307+ cmds :
308+ - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}}
309+ - wget --quiet --output-document="{{.AVA_SCHEMA_PATH}}" {{.AVA_SCHEMA_URL}}
310+ - wget --quiet --output-document="{{.ESLINTRC_SCHEMA_PATH}}" {{.ESLINTRC_SCHEMA_URL}}
311+ - wget --quiet --output-document="{{.JSCPD_SCHEMA_PATH}}" {{.JSCPD_SCHEMA_URL}}
312+ - wget --quiet --output-document="{{.NPM_BADGES_SCHEMA_PATH}}" {{.NPM_BADGES_SCHEMA_URL}}
313+ - wget --quiet --output-document="{{.PRETTIERRC_SCHEMA_PATH}}" {{.PRETTIERRC_SCHEMA_URL}}
314+ - wget --quiet --output-document="{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" {{.SEMANTIC_RELEASE_SCHEMA_URL}}
315+ - wget --quiet --output-document="{{.STYLELINTRC_SCHEMA_PATH}}" {{.STYLELINTRC_SCHEMA_URL}}
316+ - |
317+ cd "{{.WORKING_FOLDER}}" # Workaround for https://github.com/npm/cli/issues/3210
318+ npx ajv-cli@{{.SCHEMA_DRAFT_4_AJV_CLI_VERSION}} validate \
319+ --all-errors \
320+ -s "{{.SCHEMA_PATH}}" \
321+ -r "{{.AVA_SCHEMA_PATH}}" \
322+ -r "{{.ESLINTRC_SCHEMA_PATH}}" \
323+ -r "{{.JSCPD_SCHEMA_PATH}}" \
324+ -r "{{.NPM_BADGES_SCHEMA_PATH}}" \
325+ -r "{{.PRETTIERRC_SCHEMA_PATH}}" \
326+ -r "{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" \
327+ -r "{{.STYLELINTRC_SCHEMA_PATH}}" \
328+ -d "{{.PROJECT_FOLDER}}/{{.INSTANCE_PATH}}"
329+
264330 # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/poetry-task/Taskfile.yml
265331 poetry:install-deps :
266332 desc : Install dependencies managed by Poetry
0 commit comments