@@ -3,6 +3,8 @@ version: "3"
3
3
4
4
vars :
5
5
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
6
8
7
9
tasks :
8
10
check :
@@ -261,6 +263,70 @@ tasks:
261
263
cmds :
262
264
- npm install
263
265
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
+
264
330
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/poetry-task/Taskfile.yml
265
331
poetry:install-deps :
266
332
desc : Install dependencies managed by Poetry
0 commit comments