|
1 | 1 | # See: https://taskfile.dev/#/usage
|
2 | 2 | version: "3"
|
3 | 3 |
|
| 4 | +vars: |
| 5 | + # Last version of ajv-cli with support for the JSON schema "Draft 4" specification |
| 6 | + SCHEMA_DRAFT_4_AJV_CLI_VERSION: 3.3.0 |
| 7 | + |
4 | 8 | tasks:
|
5 | 9 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-workflows-task/Taskfile.yml
|
6 | 10 | ci:validate:
|
@@ -150,6 +154,64 @@ tasks:
|
150 | 154 | cmds:
|
151 | 155 | - npm install
|
152 | 156 |
|
| 157 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-npm-task/Taskfile.yml |
| 158 | + npm:validate: |
| 159 | + desc: Validate npm configuration files against their JSON schema |
| 160 | + vars: |
| 161 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/package.json |
| 162 | + SCHEMA_URL: https://json.schemastore.org/package.json |
| 163 | + SCHEMA_PATH: |
| 164 | + sh: task utility:mktemp-file TEMPLATE="package-json-schema-XXXXXXXXXX.json" |
| 165 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/ava.json |
| 166 | + AVA_SCHEMA_URL: https://json.schemastore.org/ava.json |
| 167 | + AVA_SCHEMA_PATH: |
| 168 | + sh: task utility:mktemp-file TEMPLATE="ava-schema-XXXXXXXXXX.json" |
| 169 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/eslintrc.json |
| 170 | + ESLINTRC_SCHEMA_URL: https://json.schemastore.org/eslintrc.json |
| 171 | + ESLINTRC_SCHEMA_PATH: |
| 172 | + sh: task utility:mktemp-file TEMPLATE="eslintrc-schema-XXXXXXXXXX.json" |
| 173 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/jscpd.json |
| 174 | + JSCPD_SCHEMA_URL: https://json.schemastore.org/jscpd.json |
| 175 | + JSCPD_SCHEMA_PATH: |
| 176 | + sh: task utility:mktemp-file TEMPLATE="jscpd-schema-XXXXXXXXXX.json" |
| 177 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/prettierrc.json |
| 178 | + PRETTIERRC_SCHEMA_URL: https://json.schemastore.org/prettierrc.json |
| 179 | + PRETTIERRC_SCHEMA_PATH: |
| 180 | + sh: task utility:mktemp-file TEMPLATE="prettierrc-schema-XXXXXXXXXX.json" |
| 181 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/semantic-release.json |
| 182 | + SEMANTIC_RELEASE_SCHEMA_URL: https://json.schemastore.org/semantic-release.json |
| 183 | + SEMANTIC_RELEASE_SCHEMA_PATH: |
| 184 | + sh: task utility:mktemp-file TEMPLATE="semantic-release-schema-XXXXXXXXXX.json" |
| 185 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/stylelintrc.json |
| 186 | + STYLELINTRC_SCHEMA_URL: https://json.schemastore.org/stylelintrc.json |
| 187 | + STYLELINTRC_SCHEMA_PATH: |
| 188 | + sh: task utility:mktemp-file TEMPLATE="stylelintrc-schema-XXXXXXXXXX.json" |
| 189 | + INSTANCE_PATH: "package.json" |
| 190 | + PROJECT_FOLDER: |
| 191 | + sh: pwd |
| 192 | + WORKING_FOLDER: |
| 193 | + sh: task utility:mktemp-folder TEMPLATE="dependabot-validate-XXXXXXXXXX" |
| 194 | + cmds: |
| 195 | + - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}} |
| 196 | + - wget --quiet --output-document="{{.AVA_SCHEMA_PATH}}" {{.AVA_SCHEMA_URL}} |
| 197 | + - wget --quiet --output-document="{{.ESLINTRC_SCHEMA_PATH}}" {{.ESLINTRC_SCHEMA_URL}} |
| 198 | + - wget --quiet --output-document="{{.JSCPD_SCHEMA_PATH}}" {{.JSCPD_SCHEMA_URL}} |
| 199 | + - wget --quiet --output-document="{{.PRETTIERRC_SCHEMA_PATH}}" {{.PRETTIERRC_SCHEMA_URL}} |
| 200 | + - wget --quiet --output-document="{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" {{.SEMANTIC_RELEASE_SCHEMA_URL}} |
| 201 | + - wget --quiet --output-document="{{.STYLELINTRC_SCHEMA_PATH}}" {{.STYLELINTRC_SCHEMA_URL}} |
| 202 | + - | |
| 203 | + cd "{{.WORKING_FOLDER}}" # Workaround for https://github.com/npm/cli/issues/3210 |
| 204 | + npx ajv-cli@{{.SCHEMA_DRAFT_4_AJV_CLI_VERSION}} validate \ |
| 205 | + --all-errors \ |
| 206 | + -s "{{.SCHEMA_PATH}}" \ |
| 207 | + -r "{{.AVA_SCHEMA_PATH}}" \ |
| 208 | + -r "{{.ESLINTRC_SCHEMA_PATH}}" \ |
| 209 | + -r "{{.JSCPD_SCHEMA_PATH}}" \ |
| 210 | + -r "{{.PRETTIERRC_SCHEMA_PATH}}" \ |
| 211 | + -r "{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" \ |
| 212 | + -r "{{.STYLELINTRC_SCHEMA_PATH}}" \ |
| 213 | + -d "{{.PROJECT_FOLDER}}/{{.INSTANCE_PATH}}" |
| 214 | +
|
153 | 215 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/poetry-task/Taskfile.yml
|
154 | 216 | poetry:install-deps:
|
155 | 217 | desc: Install dependencies managed by Poetry
|
@@ -242,6 +304,17 @@ tasks:
|
242 | 304 | vars:
|
243 | 305 | RAW_PATH: "{{.RAW_PATH}}"
|
244 | 306 |
|
| 307 | + # Make a temporary folder named according to the passed TEMPLATE variable and print the path passed to stdout |
| 308 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/windows-task/Taskfile.yml |
| 309 | + utility:mktemp-folder: |
| 310 | + vars: |
| 311 | + RAW_PATH: |
| 312 | + sh: mktemp --directory --tmpdir "{{.TEMPLATE}}" |
| 313 | + cmds: |
| 314 | + - task: utility:normalize-path |
| 315 | + vars: |
| 316 | + RAW_PATH: "{{.RAW_PATH}}" |
| 317 | + |
245 | 318 | # Print a normalized version of the path passed via the RAW_PATH variable to stdout
|
246 | 319 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/windows-task/Taskfile.yml
|
247 | 320 | utility:normalize-path:
|
|
0 commit comments