|
18 | 18 | || \
|
19 | 19 | echo '"ERROR: Unable to discover Go packages"' \
|
20 | 20 | )
|
| 21 | + # Last version of ajv-cli with support for the JSON schema "Draft 4" specification |
| 22 | + SCHEMA_DRAFT_4_AJV_CLI_VERSION: 3.3.0 |
21 | 23 | # build vars
|
22 | 24 | COMMIT:
|
23 | 25 | sh: echo "$(git log --no-show-signature -n 1 --format=%h)"
|
@@ -380,6 +382,85 @@ tasks:
|
380 | 382 | cmds:
|
381 | 383 | - npm install
|
382 | 384 |
|
| 385 | + # Parameter variables: |
| 386 | + # - PROJECT_PATH: path of the npm-managed project. Default value: "./" |
| 387 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-npm-task/Taskfile.yml |
| 388 | + npm:validate: |
| 389 | + desc: Validate npm configuration files against their JSON schema |
| 390 | + vars: |
| 391 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/package.json |
| 392 | + SCHEMA_URL: https://json.schemastore.org/package.json |
| 393 | + SCHEMA_PATH: |
| 394 | + sh: task utility:mktemp-file TEMPLATE="package-json-schema-XXXXXXXXXX.json" |
| 395 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/ava.json |
| 396 | + AVA_SCHEMA_URL: https://json.schemastore.org/ava.json |
| 397 | + AVA_SCHEMA_PATH: |
| 398 | + sh: task utility:mktemp-file TEMPLATE="ava-schema-XXXXXXXXXX.json" |
| 399 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/base.json |
| 400 | + BASE_SCHEMA_URL: https://json.schemastore.org/base.json |
| 401 | + BASE_SCHEMA_PATH: |
| 402 | + sh: task utility:mktemp-file TEMPLATE="base-schema-XXXXXXXXXX.json" |
| 403 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/eslintrc.json |
| 404 | + ESLINTRC_SCHEMA_URL: https://json.schemastore.org/eslintrc.json |
| 405 | + ESLINTRC_SCHEMA_PATH: |
| 406 | + sh: task utility:mktemp-file TEMPLATE="eslintrc-schema-XXXXXXXXXX.json" |
| 407 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/jscpd.json |
| 408 | + JSCPD_SCHEMA_URL: https://json.schemastore.org/jscpd.json |
| 409 | + JSCPD_SCHEMA_PATH: |
| 410 | + sh: task utility:mktemp-file TEMPLATE="jscpd-schema-XXXXXXXXXX.json" |
| 411 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/npm-badges.json |
| 412 | + NPM_BADGES_SCHEMA_URL: https://json.schemastore.org/npm-badges.json |
| 413 | + NPM_BADGES_SCHEMA_PATH: |
| 414 | + sh: task utility:mktemp-file TEMPLATE="npm-badges-schema-XXXXXXXXXX.json" |
| 415 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/partial-eslint-plugins.json |
| 416 | + PARTIAL_ESLINT_PLUGINS_SCHEMA_URL: https://json.schemastore.org/partial-eslint-plugins.json |
| 417 | + PARTIAL_ESLINT_PLUGINS_PATH: |
| 418 | + sh: task utility:mktemp-file TEMPLATE="partial-eslint-plugins-schema-XXXXXXXXXX.json" |
| 419 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/prettierrc.json |
| 420 | + PRETTIERRC_SCHEMA_URL: https://json.schemastore.org/prettierrc.json |
| 421 | + PRETTIERRC_SCHEMA_PATH: |
| 422 | + sh: task utility:mktemp-file TEMPLATE="prettierrc-schema-XXXXXXXXXX.json" |
| 423 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/semantic-release.json |
| 424 | + SEMANTIC_RELEASE_SCHEMA_URL: https://json.schemastore.org/semantic-release.json |
| 425 | + SEMANTIC_RELEASE_SCHEMA_PATH: |
| 426 | + sh: task utility:mktemp-file TEMPLATE="semantic-release-schema-XXXXXXXXXX.json" |
| 427 | + # Source: https://github.com/SchemaStore/schemastore/blob/master/src/schemas/json/stylelintrc.json |
| 428 | + STYLELINTRC_SCHEMA_URL: https://json.schemastore.org/stylelintrc.json |
| 429 | + STYLELINTRC_SCHEMA_PATH: |
| 430 | + sh: task utility:mktemp-file TEMPLATE="stylelintrc-schema-XXXXXXXXXX.json" |
| 431 | + INSTANCE_PATH: >- |
| 432 | + {{default "." .PROJECT_PATH}}/package.json |
| 433 | + PROJECT_FOLDER: |
| 434 | + sh: pwd |
| 435 | + WORKING_FOLDER: |
| 436 | + sh: task utility:mktemp-folder TEMPLATE="dependabot-validate-XXXXXXXXXX" |
| 437 | + cmds: |
| 438 | + - wget --quiet --output-document="{{.SCHEMA_PATH}}" {{.SCHEMA_URL}} |
| 439 | + - wget --quiet --output-document="{{.AVA_SCHEMA_PATH}}" {{.AVA_SCHEMA_URL}} |
| 440 | + - wget --quiet --output-document="{{.BASE_SCHEMA_PATH}}" {{.BASE_SCHEMA_URL}} |
| 441 | + - wget --quiet --output-document="{{.ESLINTRC_SCHEMA_PATH}}" {{.ESLINTRC_SCHEMA_URL}} |
| 442 | + - wget --quiet --output-document="{{.JSCPD_SCHEMA_PATH}}" {{.JSCPD_SCHEMA_URL}} |
| 443 | + - wget --quiet --output-document="{{.NPM_BADGES_SCHEMA_PATH}}" {{.NPM_BADGES_SCHEMA_URL}} |
| 444 | + - wget --quiet --output-document="{{.PARTIAL_ESLINT_PLUGINS_PATH}}" {{.PARTIAL_ESLINT_PLUGINS_SCHEMA_URL}} |
| 445 | + - wget --quiet --output-document="{{.PRETTIERRC_SCHEMA_PATH}}" {{.PRETTIERRC_SCHEMA_URL}} |
| 446 | + - wget --quiet --output-document="{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" {{.SEMANTIC_RELEASE_SCHEMA_URL}} |
| 447 | + - wget --quiet --output-document="{{.STYLELINTRC_SCHEMA_PATH}}" {{.STYLELINTRC_SCHEMA_URL}} |
| 448 | + - | |
| 449 | + cd "{{.WORKING_FOLDER}}" # Workaround for https://github.com/npm/cli/issues/3210 |
| 450 | + npx ajv-cli@{{.SCHEMA_DRAFT_4_AJV_CLI_VERSION}} validate \ |
| 451 | + --all-errors \ |
| 452 | + -s "{{.SCHEMA_PATH}}" \ |
| 453 | + -r "{{.AVA_SCHEMA_PATH}}" \ |
| 454 | + -r "{{.BASE_SCHEMA_PATH}}" \ |
| 455 | + -r "{{.ESLINTRC_SCHEMA_PATH}}" \ |
| 456 | + -r "{{.JSCPD_SCHEMA_PATH}}" \ |
| 457 | + -r "{{.NPM_BADGES_SCHEMA_PATH}}" \ |
| 458 | + -r "{{.PARTIAL_ESLINT_PLUGINS_PATH}}" \ |
| 459 | + -r "{{.PRETTIERRC_SCHEMA_PATH}}" \ |
| 460 | + -r "{{.SEMANTIC_RELEASE_SCHEMA_PATH}}" \ |
| 461 | + -r "{{.STYLELINTRC_SCHEMA_PATH}}" \ |
| 462 | + -d "{{.PROJECT_FOLDER}}/{{.INSTANCE_PATH}}" |
| 463 | +
|
383 | 464 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/poetry-task/Taskfile.yml
|
384 | 465 | poetry:install-deps:
|
385 | 466 | desc: Install dependencies managed by Poetry
|
@@ -465,6 +546,41 @@ tasks:
|
465 | 546 | fi
|
466 | 547 | - shfmt -w "{{.SCRIPT_PATH}}"
|
467 | 548 |
|
| 549 | + # Make a temporary file named according to the passed TEMPLATE variable and print the path passed to stdout |
| 550 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/windows-task/Taskfile.yml |
| 551 | + utility:mktemp-file: |
| 552 | + vars: |
| 553 | + RAW_PATH: |
| 554 | + sh: mktemp --tmpdir "{{.TEMPLATE}}" |
| 555 | + cmds: |
| 556 | + - task: utility:normalize-path |
| 557 | + vars: |
| 558 | + RAW_PATH: "{{.RAW_PATH}}" |
| 559 | + |
| 560 | + # Make a temporary folder named according to the passed TEMPLATE variable and print the path passed to stdout |
| 561 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/windows-task/Taskfile.yml |
| 562 | + utility:mktemp-folder: |
| 563 | + vars: |
| 564 | + RAW_PATH: |
| 565 | + sh: mktemp --directory --tmpdir "{{.TEMPLATE}}" |
| 566 | + cmds: |
| 567 | + - task: utility:normalize-path |
| 568 | + vars: |
| 569 | + RAW_PATH: "{{.RAW_PATH}}" |
| 570 | + |
| 571 | + # Print a normalized version of the path passed via the RAW_PATH variable to stdout |
| 572 | + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/windows-task/Taskfile.yml |
| 573 | + utility:normalize-path: |
| 574 | + cmds: |
| 575 | + - | |
| 576 | + if [[ "{{.OS}}" == "Windows_NT" ]] && which cygpath &>/dev/null; then |
| 577 | + # Even though the shell handles POSIX format absolute paths as expected, external applications do not. |
| 578 | + # So paths passed to such applications must first be converted to Windows format. |
| 579 | + cygpath -w "{{.RAW_PATH}}" |
| 580 | + else |
| 581 | + echo "{{.RAW_PATH}}" |
| 582 | + fi |
| 583 | +
|
468 | 584 | # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-mkdocs-task/Taskfile.yml
|
469 | 585 | website:check:
|
470 | 586 | desc: Check whether the MkDocs-based website will build
|
|
0 commit comments