diff --git a/.github/workflows/check-formatting.yml b/.github/workflows/check-formatting.yml deleted file mode 100644 index 05008504..00000000 --- a/.github/workflows/check-formatting.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Check formatting - -on: - push: - paths: - - ".github/workflows/check-formatting.yml" - - "Taskfile.yml" - - ".prettierrc" - - "**.json" - - "**.md" - - "**.yaml" - - "**.yml" - pull_request: - paths: - - ".github/workflows/check-formatting.yml" - - "Taskfile.yml" - - ".prettierrc" - - "**.json" - - "**.md" - - "**.yaml" - - "**.yml" - -jobs: - check-formatting: - runs-on: ubuntu-latest - - steps: - - name: Checkout local repository - uses: actions/checkout@v2 - - - name: Install Taskfile - uses: arduino/setup-task@v1 - with: - repo-token: ${{ secrets.GITHUB_TOKEN }} - version: 3.x - - - name: Check documentation formatting - run: task docs:check-formatting - - - name: Check configuration file formatting - run: task config:check-formatting diff --git a/.github/workflows/check-prettier-formatting-task.yml b/.github/workflows/check-prettier-formatting-task.yml new file mode 100644 index 00000000..caccbcf9 --- /dev/null +++ b/.github/workflows/check-prettier-formatting-task.yml @@ -0,0 +1,219 @@ +# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-prettier-formatting-task.md +name: Check Prettier Formatting + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/check-prettier-formatting-task.ya?ml" + - "Taskfile.ya?ml" + - "**/.prettierignore" + - "**/.prettierrc*" + # CSS + - "**.css" + - "**.wxss" + # PostCSS + - "**.pcss" + - "**.postcss" + # Less + - "**.less" + # SCSS + - "**.scss" + # GraphQL + - "**.graphqls?" + - "**.gql" + # handlebars + - "**.handlebars" + - "**.hbs" + # HTML + - "**.mjml" + - "**.html?" + - "**.html.hl" + - "**.st" + - "**.xht" + - "**.xhtml" + # Vue + - "**.vue" + # JavaScript + - "**.flow" + - "**._?jsb?" + - "**.bones" + - "**.cjs" + - "**.es6?" + - "**.frag" + - "**.gs" + - "**.jake" + - "**.jscad" + - "**.jsfl" + - "**.js[ms]" + - "**.[mn]js" + - "**.pac" + - "**.wxs" + - "**.[xs]s?js" + - "**.xsjslib" + # JSX + - "**.jsx" + # TypeScript + - "**.ts" + # TSX + - "**.tsx" + # JSON + - "**/.eslintrc" + - "**.json" + - "**.avsc" + - "**.geojson" + - "**.gltf" + - "**.har" + - "**.ice" + - "**.JSON-tmLanguage" + - "**.mcmeta" + - "**.tfstate" + - "**.topojson" + - "**.webapp" + - "**.webmanifest" + - "**.yyp?" + # JSONC + - "**/.babelrc" + - "**/.jscsrc" + - "**/.js[hl]intrc" + - "**.jsonc" + - "**.sublime-*" + # JSON5 + - "**.json5" + # Markdown + - "**.mdx?" + - "**.markdown" + - "**.mk?down" + - "**.mdwn" + - "**.mkdn?" + - "**.ronn" + - "**.workbook" + # YAML + - "**/.clang-format" + - "**/.clang-tidy" + - "**/.gemrc" + - "**/glide.lock" + - "**.ya?ml*" + - "**.mir" + - "**.reek" + - "**.rviz" + - "**.sublime-syntax" + - "**.syntax" + pull_request: + paths: + - ".github/workflows/check-prettier-formatting-task.ya?ml" + - "Taskfile.ya?ml" + - "**/.prettierignore" + - "**/.prettierrc*" + # CSS + - "**.css" + - "**.wxss" + # PostCSS + - "**.pcss" + - "**.postcss" + # Less + - "**.less" + # SCSS + - "**.scss" + # GraphQL + - "**.graphqls?" + - "**.gql" + # handlebars + - "**.handlebars" + - "**.hbs" + # HTML + - "**.mjml" + - "**.html?" + - "**.html.hl" + - "**.st" + - "**.xht" + - "**.xhtml" + # Vue + - "**.vue" + # JavaScript + - "**.flow" + - "**._?jsb?" + - "**.bones" + - "**.cjs" + - "**.es6?" + - "**.frag" + - "**.gs" + - "**.jake" + - "**.jscad" + - "**.jsfl" + - "**.js[ms]" + - "**.[mn]js" + - "**.pac" + - "**.wxs" + - "**.[xs]s?js" + - "**.xsjslib" + # JSX + - "**.jsx" + # TypeScript + - "**.ts" + # TSX + - "**.tsx" + # JSON + - "**/.eslintrc" + - "**.json" + - "**.avsc" + - "**.geojson" + - "**.gltf" + - "**.har" + - "**.ice" + - "**.JSON-tmLanguage" + - "**.mcmeta" + - "**.tfstate" + - "**.topojson" + - "**.webapp" + - "**.webmanifest" + - "**.yyp?" + # JSONC + - "**/.babelrc" + - "**/.jscsrc" + - "**/.js[hl]intrc" + - "**.jsonc" + - "**.sublime-*" + # JSON5 + - "**.json5" + # Markdown + - "**.mdx?" + - "**.markdown" + - "**.mk?down" + - "**.mdwn" + - "**.mkdn?" + - "**.ronn" + - "**.workbook" + # YAML + - "**/.clang-format" + - "**/.clang-tidy" + - "**/.gemrc" + - "**/glide.lock" + - "**.ya?ml*" + - "**.mir" + - "**.reek" + - "**.rviz" + - "**.sublime-syntax" + - "**.syntax" + workflow_dispatch: + repository_dispatch: + +jobs: + check: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Install Task + uses: arduino/setup-task@v1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + version: 3.x + + - name: Format with Prettier + run: task general:format-prettier + + - name: Check formatting + run: git diff --color --exit-code diff --git a/README.md b/README.md index b2767463..7e8f6e46 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ [![Check Markdown status](https://github.com/arduino/arduino-lint/actions/workflows/check-markdown-task.yml/badge.svg)](https://github.com/arduino/arduino-lint/actions/workflows/check-markdown-task.yml) [![Docs Status](https://github.com/arduino/arduino-lint/workflows/Publish%20documentation/badge.svg)](https://github.com/arduino/arduino-lint/actions?workflow=Publish+documentation) [![Codecov](https://codecov.io/gh/arduino/arduino-lint/branch/main/graph/badge.svg?token=nprqPQMbdh)](https://codecov.io/gh/arduino/arduino-lint) +[![Check Prettier Formatting status](https://github.com/arduino/arduino-lint/actions/workflows/check-prettier-formatting-task.yml/badge.svg)](https://github.com/arduino/arduino-lint/actions/workflows/check-prettier-formatting-task.yml) [![Check General Formatting status](https://github.com/arduino/arduino-lint/actions/workflows/check-general-formatting-task.yml/badge.svg)](https://github.com/arduino/arduino-lint/actions/workflows/check-general-formatting-task.yml) [![Check Shell Scripts status](https://github.com/arduino/arduino-lint/actions/workflows/check-shell-task.yml/badge.svg)](https://github.com/arduino/arduino-lint/actions/workflows/check-shell-task.yml) [![Check Certificates status](https://github.com/arduino/arduino-lint/actions/workflows/check-certificates.yml/badge.svg)](https://github.com/arduino/arduino-lint/actions/workflows/check-certificates.yml) diff --git a/Taskfile.yml b/Taskfile.yml index 61abb84a..05a34530 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -60,8 +60,6 @@ tasks: check-formatting: desc: Check formatting of all files cmds: - - task: docs:check-formatting - - task: config:check-formatting - task: general:check-formatting format: @@ -69,8 +67,7 @@ tasks: cmds: - task: go:format - task: python:format - - task: docs:format - - task: config:format + - task: general:format-prettier # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-go-task/Taskfile.yml go:check: @@ -199,7 +196,7 @@ tasks: # we invoke `arduino-lint` like this instead of `./arduino-lint` to remove # the `./` chars from the examples - PATH=. arduino-lint ../docs/commands - - task: docs:format + - task: general:format-prettier docs:build: desc: Build documentation website contents @@ -223,7 +220,6 @@ tasks: docs:check: desc: Lint and check formatting of documentation files cmds: - - task: docs:check-formatting - task: markdown:lint - task: markdown:fix - task: markdown:check-links @@ -257,16 +253,6 @@ tasks: exit 1 fi - docs:check-formatting: - desc: Check formatting of documentation files - cmds: - - npx {{ .PRETTIER }} --check "**/*.md" - - docs:format: - desc: Format documentation files - cmds: - - npx {{ .PRETTIER }} --write "**/*.md" - # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-shell-task/Taskfile.yml shell:check: desc: Check for problems with shell scripts @@ -338,7 +324,6 @@ tasks: config:check: desc: Lint and check formatting of configuration files cmds: - - task: config:check-formatting - task: config:lint config:lint: @@ -352,18 +337,6 @@ tasks: - wget --output-document={{ .WORKFLOW_SCHEMA_PATH }} https://json.schemastore.org/github-workflow - npx ajv-cli validate --strict=false -s {{ .WORKFLOW_SCHEMA_PATH }} -d "./.github/workflows/*.{yml,yaml}" - config:check-formatting: - desc: Check formatting of configuration files - cmds: - - npx {{ .PRETTIER }} --check "**/*.{yml,yaml}" - - npx {{ .PRETTIER }} --check "**/*.json" - - config:format: - desc: Format configuration files - cmds: - - npx {{ .PRETTIER }} --write "**/*.{yml,yaml}" - - npx {{ .PRETTIER }} --write "**/*.json" - # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-general-formatting-task/Taskfile.yml general:check-formatting: desc: Check basic formatting style of all files @@ -375,6 +348,12 @@ tasks: fi - ec + # Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-prettier-formatting-task/Taskfile.yml + general:format-prettier: + desc: Format all supported files with Prettier + cmds: + - npx prettier --write . + check-spelling: desc: Check for commonly misspelled words cmds: @@ -411,7 +390,6 @@ vars: -X {{ .CONFIGURATION_PACKAGE }}.buildTimestamp={{.TIMESTAMP}} ' GOFLAGS: "-timeout 10m -v -coverpkg=./... -covermode=atomic" - DOCS_VERSION: dev DOCS_ALIAS: "" DOCS_REMOTE: "origin" diff --git a/docs/css/version-select.css b/docs/css/version-select.css index 49079bf4..e5bd98b8 100644 --- a/docs/css/version-select.css +++ b/docs/css/version-select.css @@ -1,5 +1,5 @@ -@media only screen and (max-width:76.1875em) { +@media only screen and (max-width: 76.1875em) { #version-selector { - padding: .6rem .8rem; + padding: 0.6rem 0.8rem; } } diff --git a/docs/js/version-select.js b/docs/js/version-select.js index 6c316b81..61d8307e 100644 --- a/docs/js/version-select.js +++ b/docs/js/version-select.js @@ -1,50 +1,51 @@ window.addEventListener("DOMContentLoaded", function () { // This is a bit hacky. Figure out the base URL from a known CSS file the // template refers to... - var ex = new RegExp("/?assets/fonts/material-icons.css$"); - var sheet = document.querySelector('link[href$="material-icons.css"]'); + var ex = new RegExp("/?assets/fonts/material-icons.css$") + var sheet = document.querySelector('link[href$="material-icons.css"]') - var REL_BASE_URL = sheet.getAttribute("href").replace(ex, ""); - var ABS_BASE_URL = sheet.href.replace(ex, ""); - var CURRENT_VERSION = ABS_BASE_URL.split("/").pop(); + var REL_BASE_URL = sheet.getAttribute("href").replace(ex, "") + var ABS_BASE_URL = sheet.href.replace(ex, "") + var CURRENT_VERSION = ABS_BASE_URL.split("/").pop() function makeSelect(options, selected) { - var select = document.createElement("select"); - select.classList.add("form-control"); + var select = document.createElement("select") + select.classList.add("form-control") options.forEach(function (i) { - var option = new Option(i.text, i.value, undefined, - i.value === selected); - select.add(option); - }); + var option = new Option(i.text, i.value, undefined, i.value === selected) + select.add(option) + }) - return select; + return select } - var xhr = new XMLHttpRequest(); - xhr.open("GET", ABS_BASE_URL + "/../versions.json"); + var xhr = new XMLHttpRequest() + xhr.open("GET", ABS_BASE_URL + "/../versions.json") xhr.onload = function () { - var versions = JSON.parse(this.responseText); + var versions = JSON.parse(this.responseText) var realVersion = versions.find(function (i) { - return i.version === CURRENT_VERSION || - i.aliases.includes(CURRENT_VERSION); - }).version; - - var select = makeSelect(versions.map(function (i) { - return { text: i.title, value: i.version }; - }), realVersion); + return i.version === CURRENT_VERSION || i.aliases.includes(CURRENT_VERSION) + }).version + + var select = makeSelect( + versions.map(function (i) { + return { text: i.title, value: i.version } + }), + realVersion + ) select.addEventListener("change", function (event) { - window.location.href = ABS_BASE_URL + "/../" + this.value; - }); - - var container = document.createElement("div"); - container.id = "version-selector"; - container.className = "md-nav__item"; - container.appendChild(select); - - var sidebar = document.querySelector(".md-nav--primary > .md-nav__list"); - sidebar.parentNode.insertBefore(container, sidebar); - }; - xhr.send(); -}); + window.location.href = ABS_BASE_URL + "/../" + this.value + }) + + var container = document.createElement("div") + container.id = "version-selector" + container.className = "md-nav__item" + container.appendChild(select) + + var sidebar = document.querySelector(".md-nav--primary > .md-nav__list") + sidebar.parentNode.insertBefore(container, sidebar) + } + xhr.send() +})