From c4393b06b13ea4fe3e9203f92bd669faacd01010 Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 31 Jan 2024 13:18:59 -0800 Subject: [PATCH 1/2] Install referenced schema in "npm:validate" task The "npm:validate" task validates the repository's `package.json` npm manifest file against its JSON schema to catch any problems with its data format. In order to avoid duplication of content, JSON schemas may reference other schemas via the `$ref` keyword. The `package.json` schema was recently updated to share resources with the "base" configuration schema, which caused the validation to start failing: schema /tmp/package-json-schema-m3x8Uu4NED.json is invalid error: can't resolve reference https://json.schemastore.org/base.json#/definitions/license from id https://json.schemastore.org/package.json# The solution is to configure the task to download that schema as well and also to provide its path to the avj-cli validator via a `-r` flag. --- Taskfile.yml | 6 ++++++ workflow-templates/assets/check-npm-task/Taskfile.yml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/Taskfile.yml b/Taskfile.yml index ac5568de..3c807bce 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -731,6 +731,10 @@ tasks: AVA_SCHEMA_URL: https://json.schemastore.org/ava.json AVA_SCHEMA_PATH: sh: task utility:mktemp-file TEMPLATE="ava-schema-XXXXXXXXXX.json" + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/base.json + BASE_SCHEMA_URL: https://json.schemastore.org/base.json + BASE_SCHEMA_PATH: + sh: task utility:mktemp-file TEMPLATE="base-schema-XXXXXXXXXX.json" # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/eslintrc.json ESLINTRC_SCHEMA_URL: https://json.schemastore.org/eslintrc.json ESLINTRC_SCHEMA_PATH: @@ -768,6 +772,7 @@ tasks: cmds: - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}} - wget --quiet --output-document="{{.AVA_SCHEMA_PATH}}" {{.AVA_SCHEMA_URL}} + - wget --quiet --output-document="{{.BASE_SCHEMA_PATH}}" {{.BASE_SCHEMA_URL}} - wget --quiet --output-document="{{.ESLINTRC_SCHEMA_PATH}}" {{.ESLINTRC_SCHEMA_URL}} - wget --quiet --output-document="{{.JSCPD_SCHEMA_PATH}}" {{.JSCPD_SCHEMA_URL}} - wget --quiet --output-document="{{.NPM_BADGES_SCHEMA_PATH}}" {{.NPM_BADGES_SCHEMA_URL}} @@ -781,6 +786,7 @@ tasks: --all-errors \ -s "{{.SCHEMA_PATH}}" \ -r "{{.AVA_SCHEMA_PATH}}" \ + -r "{{.BASE_SCHEMA_PATH}}" \ -r "{{.ESLINTRC_SCHEMA_PATH}}" \ -r "{{.JSCPD_SCHEMA_PATH}}" \ -r "{{.NPM_BADGES_SCHEMA_PATH}}" \ diff --git a/workflow-templates/assets/check-npm-task/Taskfile.yml b/workflow-templates/assets/check-npm-task/Taskfile.yml index 94a07d10..c351070a 100644 --- a/workflow-templates/assets/check-npm-task/Taskfile.yml +++ b/workflow-templates/assets/check-npm-task/Taskfile.yml @@ -20,6 +20,10 @@ tasks: AVA_SCHEMA_URL: https://json.schemastore.org/ava.json AVA_SCHEMA_PATH: sh: task utility:mktemp-file TEMPLATE="ava-schema-XXXXXXXXXX.json" + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/base.json + BASE_SCHEMA_URL: https://json.schemastore.org/base.json + BASE_SCHEMA_PATH: + sh: task utility:mktemp-file TEMPLATE="base-schema-XXXXXXXXXX.json" # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/eslintrc.json ESLINTRC_SCHEMA_URL: https://json.schemastore.org/eslintrc.json ESLINTRC_SCHEMA_PATH: @@ -57,6 +61,7 @@ tasks: cmds: - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}} - wget --quiet --output-document="{{.AVA_SCHEMA_PATH}}" {{.AVA_SCHEMA_URL}} + - wget --quiet --output-document="{{.BASE_SCHEMA_PATH}}" {{.BASE_SCHEMA_URL}} - wget --quiet --output-document="{{.ESLINTRC_SCHEMA_PATH}}" {{.ESLINTRC_SCHEMA_URL}} - wget --quiet --output-document="{{.JSCPD_SCHEMA_PATH}}" {{.JSCPD_SCHEMA_URL}} - wget --quiet --output-document="{{.NPM_BADGES_SCHEMA_PATH}}" {{.NPM_BADGES_SCHEMA_URL}} @@ -70,6 +75,7 @@ tasks: --all-errors \ -s "{{.SCHEMA_PATH}}" \ -r "{{.AVA_SCHEMA_PATH}}" \ + -r "{{.BASE_SCHEMA_PATH}}" \ -r "{{.ESLINTRC_SCHEMA_PATH}}" \ -r "{{.JSCPD_SCHEMA_PATH}}" \ -r "{{.NPM_BADGES_SCHEMA_PATH}}" \ From ccecf306ee401534864a0ab6222e56ff545f296a Mon Sep 17 00:00:00 2001 From: per1234 Date: Wed, 31 Jan 2024 13:23:41 -0800 Subject: [PATCH 2/2] Install referenced schema in "dependabot:validate" task The "dependabot:validate" task validates the repository's `package.json` npm manifest file against its JSON schema to catch any problems with its data format. In order to avoid duplication of content, JSON schemas may reference other schemas via the `$ref` keyword. The Dependabot configuration schema was recently updated to share resources with the "base" configuration schema, which caused the validation to start failing: schema /tmp/dependabot-schema-CuMFs6bqY1.json is invalid error: can't resolve reference https://json.schemastore.org/base.json#/definitions/timezone from id https://json.schemastore.org/timezone The solution is to configure the task to download that schema as well and also to provide its path to the avj-cli validator via a `-r` flag. --- Taskfile.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Taskfile.yml b/Taskfile.yml index 3c807bce..09b83aa1 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -364,6 +364,10 @@ tasks: SCHEMA_URL: https://json.schemastore.org/dependabot-2.0 SCHEMA_PATH: sh: task utility:mktemp-file TEMPLATE="dependabot-schema-XXXXXXXXXX.json" + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/base.json + BASE_SCHEMA_URL: https://json.schemastore.org/base.json + BASE_SCHEMA_PATH: + sh: task utility:mktemp-file TEMPLATE="base-schema-XXXXXXXXXX.json" # The Dependabot configuration file for the repository. DATA_PATH: ".github/dependabot.yml" # The asset Dependabot configuration files. @@ -372,17 +376,20 @@ tasks: sh: task utility:mktemp-folder TEMPLATE="dependabot-validate-XXXXXXXXXX" cmds: - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}} + - wget --quiet --output-document="{{.BASE_SCHEMA_PATH}}" {{.BASE_SCHEMA_URL}} - | npx ajv-cli validate \ --all-errors \ --strict=false \ -s "{{.SCHEMA_PATH}}" \ + -r "{{.BASE_SCHEMA_PATH}}" \ -d "{{.DATA_PATH}}" - | npx ajv-cli validate \ --all-errors \ --strict=false \ -s "{{.SCHEMA_PATH}}" \ + -r "{{.BASE_SCHEMA_PATH}}" \ -d "{{.ASSETS_DATA_PATH}}" docs:generate: