Skip to content
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

lint: WIP markdown support #12

Merged
merged 17 commits into from
Jan 31, 2023
25 changes: 25 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ on:
default: false
required: false
type: boolean
org-repo-ref:
description: "the ref: branch or commit to use of the org repo"
default: "main"
required: false
type: string

env:
# Rust: GitHub Actions supports color codes, so always enable them.
Expand All @@ -52,11 +57,21 @@ env:
# the subset of development dependencies installed.
INSTALL_EXTRA: lint

ORG_REPO: trailofbits/.github
ORG_REPO_REF: ${{ inputs.org-repo-ref }}
ORG_REPO_PATH: /tmp/org_github

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v3
with:
repository: ${{env.ORG_REPO}}
ref: ${{env.ORG_REPO_REF}}
path: tmp/org_repo
- run: mv tmp/org_repo ${ORG_REPO_PATH}
woodruffw marked this conversation as resolved.
Show resolved Hide resolved

# Python
- name: configure python, if required
Expand Down Expand Up @@ -123,6 +138,16 @@ jobs:
version: "${{ inputs.golangci-lint-version }}"
working-directory: "${{ inputs.directory }}"

# Markdown
- name: run markdownlint-cli2
if: inputs.language == 'markdown'
uses: DavidAnson/markdownlint-cli2-action@v9
with:
command: config
globs: |
${{env.ORG_REPO_PATH}}/configs/default.markdownlint.jsonc
**/*.md

# Make
- name: run lint (make)
if: (inputs.language == 'python' && inputs.type == '') || inputs.type == 'make'
Expand Down
240 changes: 240 additions & 0 deletions configs/default.markdownlint.jsonc
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
{
// Default state for all rules
"default": true,
// MD001/heading-increment/header-increment - Heading levels should only increment by one level at a time
"MD001": true,
// MD002/first-heading-h1/first-header-h1 - First heading should be a top-level heading
"MD002": {
// Heading level
"level": 1
},
// MD003/heading-style/header-style - Heading style
"MD003": {
// Heading style
"style": "atx"
},
// MD004/ul-style - Unordered list style
"MD004": {
// List style
"style": "asterisk"
},
// MD005/list-indent - Inconsistent indentation for list items at the same level
"MD005": true,
// MD006/ul-start-left - Consider starting bulleted lists at the beginning of the line
"MD006": true,
// MD007/ul-indent - Unordered list indentation
"MD007": {
// Spaces for indent
"indent": 2,
// Whether to indent the first level of the list
"start_indented": false,
// Spaces for first level indent (when start_indented is set)
"start_indent": 2
},
// MD009/no-trailing-spaces - Trailing spaces
"MD009": {
// Spaces for line break
"br_spaces": 2,
// Allow spaces for empty lines in list items
"list_item_empty_lines": false,
// Include unnecessary breaks
"strict": false
},
// MD010/no-hard-tabs - Hard tabs
"MD010": {
// Include code blocks
"code_blocks": true,
// Fenced code languages to ignore
"ignore_code_languages": [
"make",
"makefile"
],
// Number of spaces for each hard tab
"spaces_per_tab": 1
},
// MD011/no-reversed-links - Reversed link syntax
"MD011": true,
// MD012/no-multiple-blanks - Multiple consecutive blank lines
"MD012": {
// Consecutive blank lines
"maximum": 1
},
// MD013/line-length - Line length
"MD013": {
// Number of characters
"line_length": 80,
// Number of characters for headings
"heading_line_length": 80,
// Number of characters for code blocks
"code_block_line_length": 80,
// Include code blocks
"code_blocks": true,
// Include tables
"tables": true,
// Include headings
"headings": true,
// Include headings
"headers": true,
// Strict length checking
"strict": false,
// Stern length checking
"stern": false
},
// MD014/commands-show-output - Dollar signs used before commands without showing output
"MD014": true,
// MD018/no-missing-space-atx - No space after hash on atx style heading
"MD018": true,
// MD019/no-multiple-space-atx - Multiple spaces after hash on atx style heading
"MD019": true,
// MD020/no-missing-space-closed-atx - No space inside hashes on closed atx style heading
"MD020": true,
// MD021/no-multiple-space-closed-atx - Multiple spaces inside hashes on closed atx style heading
"MD021": true,
// MD022/blanks-around-headings/blanks-around-headers - Headings should be surrounded by blank lines
"MD022": {
// Blank lines above heading
"lines_above": 1,
// Blank lines below heading
"lines_below": 1
},
// MD023/heading-start-left/header-start-left - Headings must start at the beginning of the line
"MD023": true,
// MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
"MD024": {
// Only check sibling headings
"allow_different_nesting": false,
// Only check sibling headings
"siblings_only": false
},
// MD025/single-title/single-h1 - Multiple top-level headings in the same document
"MD025": {
// Heading level
"level": 1,
// RegExp for matching title in front matter
"front_matter_title": "^\\s*title\\s*[:=]"
},
// MD026/no-trailing-punctuation - Trailing punctuation in heading
"MD026": {
// Punctuation characters not allowed at end of headings
"punctuation": ".,;:!。,;:!"
},
// MD027/no-multiple-space-blockquote - Multiple spaces after blockquote symbol
"MD027": true,
// MD028/no-blanks-blockquote - Blank line inside blockquote
"MD028": true,
// MD029/ol-prefix - Ordered list item prefix
"MD029": {
// List style
"style": "one_or_ordered"
},
// MD030/list-marker-space - Spaces after list markers
"MD030": {
// Spaces for single-line unordered list items
"ul_single": 1,
// Spaces for single-line ordered list items
"ol_single": 1,
// Spaces for multi-line unordered list items
"ul_multi": 1,
// Spaces for multi-line ordered list items
"ol_multi": 1
},
// MD031/blanks-around-fences - Fenced code blocks should be surrounded by blank lines
"MD031": {
// Include list items
"list_items": true
},
// MD032/blanks-around-lists - Lists should be surrounded by blank lines
"MD032": true,
// MD033/no-inline-html - Inline HTML
"MD033": {
// Allowed elements
"allowed_elements": []
},
// MD034/no-bare-urls - Bare URL used
"MD034": true,
// MD035/hr-style - Horizontal rule style
"MD035": {
// Horizontal rule style
"style": "consistent"
},
// MD036/no-emphasis-as-heading/no-emphasis-as-header - Emphasis used instead of a heading
"MD036": {
// Punctuation characters
"punctuation": ".,;:!?。,;:!?"
},
// MD037/no-space-in-emphasis - Spaces inside emphasis markers
"MD037": true,
// MD038/no-space-in-code - Spaces inside code span elements
"MD038": true,
// MD039/no-space-in-links - Spaces inside link text
"MD039": true,
// MD040/fenced-code-language - Fenced code blocks should have a language specified
"MD040": {
// List of languages
"allowed_languages": [],
// Require language only
"language_only": false
},
// MD041/first-line-heading/first-line-h1 - First line in a file should be a top-level heading
"MD041": {
// Heading level
"level": 1,
// RegExp for matching title in front matter
"front_matter_title": "^\\s*title\\s*[:=]"
},
// MD042/no-empty-links - No empty links
"MD042": true,
// MD043/required-headings/required-headers - Required heading structure
"MD043": {
// List of headings
"headings": [],
// List of headings
"headers": [],
// Match case of headings
"match_case": false
},
// MD044/proper-names - Proper names should have the correct capitalization
"MD044": {
// List of proper names
"names": [],
// Include code blocks
"code_blocks": true,
// Include HTML elements
"html_elements": true
},
// MD045/no-alt-text - Images should have alternate text (alt text)
"MD045": true,
// MD046/code-block-style - Code block style
"MD046": {
// Block style
"style": "consistent"
},
// MD047/single-trailing-newline - Files should end with a single newline character
"MD047": true,
// MD048/code-fence-style - Code fence style
"MD048": {
// Code fence style
"style": "consistent"
},
// MD049/emphasis-style - Emphasis style should be consistent
"MD049": {
// Emphasis style should be consistent
"style": "consistent"
},
// MD050/strong-style - Strong style should be consistent
"MD050": {
// Strong style should be consistent
"style": "consistent"
},
// MD051/link-fragments - Link fragments should be valid
"MD051": true,
// MD052/reference-links-images - Reference links and images should use a label that is defined
"MD052": true,
// MD053/link-image-reference-definitions - Link and image reference definitions should be needed
"MD053": {
// Ignored definitions
"ignored_definitions": [
"//"
]
}
}