feat: using node version of markdown-lint, no custom rule
Some checks failed
CI / Check PR Title (pull_request) Successful in 46s
CI / Makefile Lint (pull_request) Failing after 1m23s
CI / Markdown Lint (pull_request) Failing after 49s
CI / Go Lint (pull_request) Successful in 1m33s
CI / Unit Tests (pull_request) Successful in 55s
CI / Fuzz Tests (pull_request) Successful in 1m52s
CI / Mutation Tests (pull_request) Successful in 1m31s

This commit is contained in:
2026-05-16 15:22:06 -04:00
parent 46b59d743e
commit 89bf93de8f
6 changed files with 1372 additions and 50 deletions

3
.gitignore vendored
View File

@@ -24,3 +24,6 @@ go.work.sum
# env file # env file
.env .env
# Node dev tooling (markdownlint)
node_modules/

View File

@@ -1,5 +1,6 @@
{ {
"customRules": [".markdownlint-rules/one-sentence-per-line.mjs"], "customRules": ["markdownlint-rule-max-one-sentence-per-line"],
"gitignore": true,
"config": { "config": {
"default": true, "default": true,
"heading-style": { "style": "atx" }, "heading-style": { "style": "atx" },

View File

@@ -1,48 +0,0 @@
// @ts-check
/**
* @typedef {object} ErrorInfo
* @property {number} lineNumber
* @property {string} [context]
* @property {string} [detail]
* @property {[number, number]} [range]
*/
/**
* @typedef {object} Params
* @property {string[]} lines
*/
/** @typedef {(error: ErrorInfo) => void} OnError */
/**
* @typedef {object} Rule
* @property {string[]} names
* @property {string} description
* @property {string[]} tags
* @property {(params: Params, onError: OnError) => void} function
*/
/** @type {Rule} */
export default {
names: ["one-sentence-per-line"],
description: "Each sentence must be on its own line",
tags: ["sentences"],
function: function (params, onError) {
let inFence = false;
params.lines.forEach((line, index) => {
if (/^```/.test(line)) {
inFence = !inFence;
return;
}
if (inFence) return;
// Skip headings, blank lines, HTML, table rows
if (/^(#|\s*[|<]|>|\s*$)/.test(line)) return;
// Strip list marker before checking
const text = line.replace(/^\s*(?:[-*+]|\d+\.)\s+/, "");
if (/[.!?]\s+[A-Z]/.test(text)) {
onError({ lineNumber: index + 1, context: text.trim() });
}
});
},
};

View File

@@ -4,6 +4,7 @@ help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | awk -F ':.*## ' '{printf " %-15s %s\n", $$1, $$2}' @grep -E '^[a-zA-Z_-]+:.*##' $(MAKEFILE_LIST) | awk -F ':.*## ' '{printf " %-15s %s\n", $$1, $$2}'
install: ## Install dev tools install: ## Install dev tools
npm install
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
go install github.com/checkmake/checkmake/cmd/checkmake@latest go install github.com/checkmake/checkmake/cmd/checkmake@latest
go install github.com/go-gremlins/gremlins/cmd/gremlins@latest go install github.com/go-gremlins/gremlins/cmd/gremlins@latest
@@ -33,7 +34,7 @@ lint-makefile: ## Lint the Makefile
checkmake Makefile checkmake Makefile
lint-markdown: ## Lint Markdown files lint-markdown: ## Lint Markdown files
docker run --rm -v $(CURDIR):/workdir davidanson/markdownlint-cli2 "**/*.md" npx markdownlint-cli2 "**/*.md"
lint: lint-go lint-makefile lint-markdown ## Lint all code lint: lint-go lint-makefile lint-markdown ## Lint all code

1358
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

7
package.json Normal file
View File

@@ -0,0 +1,7 @@
{
"private": true,
"devDependencies": {
"markdownlint-cli2": "^0.22.1",
"markdownlint-rule-max-one-sentence-per-line": "^0.0.2"
}
}