Skip to content

Add CI workflow to check Markdown files for problems #131

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 112 additions & 0 deletions .github/workflows/check-markdown-task.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-markdown-task.md
name: Check Markdown

env:
# See: https://github.com/actions/setup-node/#readme
NODE_VERSION: 16.x

# See: https://docs.github.com/actions/using-workflows/events-that-trigger-workflows
on:
create:
push:
paths:
- ".github/workflows/check-markdown-task.ya?ml"
- ".markdown-link-check.json"
- "package.json"
- "package-lock.json"
- "Taskfile.ya?ml"
- "**/.markdownlint*"
- "**.mdx?"
- "**.mkdn"
- "**.mdown"
- "**.markdown"
pull_request:
paths:
- ".github/workflows/check-markdown-task.ya?ml"
- ".markdown-link-check.json"
- "package.json"
- "package-lock.json"
- "Taskfile.ya?ml"
- "**/.markdownlint*"
- "**.mdx?"
- "**.mkdn"
- "**.mdown"
- "**.markdown"
schedule:
# Run every Tuesday at 8 AM UTC to catch breakage caused by external changes.
- cron: "0 8 * * TUE"
workflow_dispatch:
repository_dispatch:

jobs:
run-determination:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.determination.outputs.result }}
steps:
- name: Determine if the rest of the workflow should run
id: determination
run: |
RELEASE_BRANCH_REGEX="refs/heads/[0-9]+.[0-9]+.x"
# The `create` event trigger doesn't support `branches` filters, so it's necessary to use Bash instead.
if [[
"${{ github.event_name }}" != "create" ||
"${{ github.ref }}" =~ $RELEASE_BRANCH_REGEX
]]; then
# Run the other jobs.
RESULT="true"
else
# There is no need to run the other jobs.
RESULT="false"
fi

echo "::set-output name=result::$RESULT"

lint:
needs: run-determination
if: needs.run-determination.outputs.result == 'true'
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}

- name: Initialize markdownlint-cli problem matcher
uses: xt0rted/markdownlint-problem-matcher@v1

- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x

- name: Lint
run: task markdown:lint

links:
needs: run-determination
if: needs.run-determination.outputs.result == 'true'
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: ${{ env.NODE_VERSION }}

- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x

- name: Check links
run: task --silent markdown:check-links
13 changes: 13 additions & 0 deletions .markdown-link-check.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"httpHeaders": [
{
"urls": ["https://docs.github.com/"],
"headers": {
"Accept-Encoding": "gzip, deflate, br"
}
}
],
"retryOn429": true,
"retryCount": 3,
"aliveStatusCodes": [200, 206]
}
62 changes: 62 additions & 0 deletions .markdownlint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-markdown/.markdownlint.yml
# See: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
# The code style defined in this file is the official standardized style to be used in all Arduino projects and should
# not be modified.
# Note: Rules disabled solely because they are redundant to Prettier are marked with a "Prettier" comment.

default: false
MD001: false
MD002: false
MD003: false # Prettier
MD004: false # Prettier
MD005: false # Prettier
MD006: false # Prettier
MD007: false # Prettier
MD008: false # Prettier
MD009:
br_spaces: 0
strict: true
list_item_empty_lines: false # Prettier
MD010: false # Prettier
MD011: true
MD012: false # Prettier
MD013: false
MD014: false
MD018: true
MD019: false # Prettier
MD020: true
MD021: false # Prettier
MD022: false # Prettier
MD023: false # Prettier
MD024: false
MD025:
level: 1
front_matter_title: '^\s*"?title"?\s*[:=]'
MD026: false
MD027: false # Prettier
MD028: false
MD029:
style: one
MD030:
ul_single: 1
ol_single: 1
ul_multi: 1
ol_multi: 1
MD031: false # Prettier
MD032: false # Prettier
MD033: false
MD034: false
MD035: false # Prettier
MD036: false
MD037: true
MD038: true
MD039: true
MD040: false
MD041: false
MD042: true
MD043: false
MD044: false
MD045: true
MD046:
style: fenced
MD047: false # Prettier
4 changes: 4 additions & 0 deletions .markdownlintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-markdown/.markdownlintignore
.licenses/
__pycache__/
node_modules/
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

[![Check Taskfiles status](https://github.com/arduino/arduino-language-server/actions/workflows/check-taskfiles.yml/badge.svg)](https://github.com/arduino/arduino-language-server/actions/workflows/check-taskfiles.yml)
[![Check Go status](https://github.com/arduino/arduino-language-server/actions/workflows/check-go-task.yml/badge.svg)](https://github.com/arduino/arduino-language-server/actions/workflows/check-go-task.yml)
[![Check Markdown status](https://github.com/arduino/arduino-language-server/actions/workflows/check-markdown-task.yml/badge.svg)](https://github.com/arduino/arduino-language-server/actions/workflows/check-markdown-task.yml)

The **Arduino Language Server** is the tool that powers the autocompletion of the new [Arduino IDE 2][arduino-ide-repo]. It implements the standard [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) so it can be used with other IDEs as well.

Expand Down Expand Up @@ -63,6 +64,7 @@ To run tests:
```
go test -v ./...
```

## Usage

The language server it's not intended for direct usage by humans via the command line terminal.
Expand All @@ -87,6 +89,7 @@ The -fqbn flag represents the board you're actually working on (different boards
The support for the board must be installed with the `arduino-cli core install ...` command before starting the language server.

If you do not have an Arduino CLI config file, you can create one by running:

```
arduino-cli config init
```
Expand All @@ -99,6 +102,5 @@ This open source code was written by the Arduino team and is maintained on a dai

The code contained in this repository is licensed under the terms of the Apache 2.0 license. If you have questions about licensing please contact us at [[email protected]](mailto:[email protected]).


[arduino-ide-repo]: https://github.com/arduino/arduino-ide
[go-install]: https://golang.org/doc/install
34 changes: 27 additions & 7 deletions Taskfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,6 @@ vars:
tasks:
docs:generate:
desc: Create all generated documentation content
deps:
- task: go:cli-docs
- task: protoc:docs
cmds:
- task: general:format-prettier

# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-dependencies-task/Taskfile.yml
general:cache-dep-licenses:
Expand Down Expand Up @@ -162,6 +157,7 @@ tasks:
desc: Check for broken links
deps:
- task: docs:generate
- task: npm:install-deps
cmds:
- |
if [[ "{{.OS}}" == "Windows_NT" ]]; then
Expand All @@ -178,7 +174,14 @@ tasks:
# Using -regex instead of -name to avoid Task's behavior of globbing even when quoted on Windows
# The odd method for escaping . in the regex is required for windows compatibility because mvdan.cc/sh gives
# \ characters special treatment on Windows in an attempt to support them as path separators.
for file in $(find . -regex ".*[.]md"); do
for file in $(
find . \
-type d -name '.git' -prune -o \
-type d -name '.licenses' -prune -o \
-type d -name '__pycache__' -prune -o \
-type d -name 'node_modules' -prune -o \
-regex ".*[.]md" -print
); do
markdown-link-check \
--quiet \
--config "./.markdown-link-check.json" \
Expand All @@ -189,7 +192,14 @@ tasks:
else
npx --package=markdown-link-check --call='
STATUS=0
for file in $(find . -regex ".*[.]md"); do
for file in $(
find . \
-type d -name '.git' -prune -o \
-type d -name '.licenses' -prune -o \
-type d -name '__pycache__' -prune -o \
-type d -name 'node_modules' -prune -o \
-regex ".*[.]md" -print
); do
markdown-link-check \
--quiet \
--config "./.markdown-link-check.json" \
Expand All @@ -203,15 +213,25 @@ tasks:
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-markdown-task/Taskfile.yml
markdown:fix:
desc: Automatically correct linting violations in Markdown files where possible
deps:
- task: npm:install-deps
cmds:
- npx markdownlint-cli --fix "**/*.md"

# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-markdown-task/Taskfile.yml
markdown:lint:
desc: Check for problems in Markdown files
deps:
- task: npm:install-deps
cmds:
- npx markdownlint-cli "**/*.md"

# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/npm-task/Taskfile.yml
npm:install-deps:
desc: Install dependencies managed by npm
cmds:
- npm install

# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/poetry-task/Taskfile.yml
poetry:install-deps:
desc: Install dependencies managed by Poetry
Expand Down
Loading