Skip to content

Commit

Permalink
tools: add a linter for markdown lists (#892)
Browse files Browse the repository at this point in the history
  • Loading branch information
aduh95 authored Jul 10, 2024
1 parent 30b3260 commit 19600c0
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 5 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/linters.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Linters

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- README.md
- Moderation-Policy.md
- .github/workflows/linters.yml
push:
branches:
- main
paths:
- README.md
- Moderation-Policy.md
- .github/workflows/linters.yml

concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: false

permissions:
contents: read

jobs:
lint-md-lists:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
file:
- README.md
- Moderation-Policy.md
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
persist-credentials: false
- run: tools/lint-readme-lists.mjs "$FILE"
env:
FILE: ${{ matrix.file }}
10 changes: 6 additions & 4 deletions Moderation-Policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,7 @@ remove resigning team member from respective permissions and private access.
<!-- referenced from the CoC page -->
<a id="current-members"></a>
### Current Members of Moderation Team

* [aduh95](https://github.com/aduh95) -
**Antoine du Hamel** <<[email protected]>> (he/him)
* [benjamingr](https://github.com/benjamingr) -
Expand All @@ -309,16 +310,17 @@ remove resigning team member from respective permissions and private access.


### Admins for Node.js Slack community

* [alextes](https://github.com/alextes) -
**Alexander Tesfamichael** &lt;[email protected]&gt;
* [aredridel](https://github.com/aredridel) -
**Aria Stewart** &lt;[email protected]&gt;
* [ljharb](https://github.com/ljharb) -
**Jordan Harband** &lt;[email protected]&gt;
* [jxm262](https://github.com/jxm262) -
**Justin Maat** &lt;[email protected]&gt;
* [hackygolucky](https://github.com/hackygolucky) -
**Tracy Hinds** &lt;[email protected]&gt;
* [jxm262](https://github.com/jxm262) -
**Justin Maat** &lt;[email protected]&gt;
* [ljharb](https://github.com/ljharb) -
**Jordan Harband** &lt;[email protected]&gt;

## Escalation of Issues

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ action requiring consensus and voting will abide by the TSC process for that.

### Contacts for assistance

- [@mhdawson](https://github.com/mhdawson) - **Michael Dawson**, TSC Chair
- [@mcollina](https://github.com/mcollina) - **Matteo Collina**, TSC Vice Chair
- [@mhdawson](https://github.com/mhdawson) - **Michael Dawson**, TSC Chair

### Admin members

Expand Down
29 changes: 29 additions & 0 deletions tools/lint-readme-lists.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#!/usr/bin/env node

// Validates the list in the markdown file passed as CLI argument are in the correct order.

import { open } from 'node:fs/promises';

const [,,markdownFile] = process.argv;

const readme = await open(markdownFile, 'r');

let currentList = null;
let previousGithubHandle;
let lineNumber = 0;

for await (const line of readme.readLines()) {
lineNumber++;
if (line.startsWith('##')) {
currentList = line.slice(line.indexOf(' '));
previousGithubHandle = null;
} else if (currentList && (line.startsWith('- [') || line.startsWith('* ['))) {
const currentGithubHandle = line.slice(3, line.indexOf(']')).toLowerCase();
if (previousGithubHandle && previousGithubHandle >= currentGithubHandle) {
throw new Error(`${currentGithubHandle} should be listed before ${previousGithubHandle} in the ${currentList} list (${markdownFile}:${lineNumber})`);
}

previousGithubHandle = currentGithubHandle;
}
}

0 comments on commit 19600c0

Please sign in to comment.