Skip to content

Commit

Permalink
build: only lint markdown files that have changed (POSIX-only)
Browse files Browse the repository at this point in the history
Update Makefile so that only markdown files that have changed will be
linted. Currently, if one file in doc/api has changed, all files in
doc/api are linted.

On Windows, the lint-md task currently lints all files regardless of
whether any files has changed, and that behavior is unchanged here.

A further improvement is that when tools/lint-md.js is rebuilt, the
timestamp file is removed so that all files are linted again. This is
because rebuilding lint-md.js can introduce new rules or modify existing
rules, so re-linting everything helps make sure that accidental breakage
doesn't slip by unnoticed.

PR-URL: #31923
Reviewed-By: Anna Henningsen <anna@addaleax.net>
  • Loading branch information
Trott authored and codebytere committed Mar 3, 2020
1 parent 3849474 commit 9a41ced
Showing 1 changed file with 15 additions and 19 deletions.
34 changes: 15 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -1165,6 +1165,7 @@ bench-addons-clean:

.PHONY: lint-md-rollup
lint-md-rollup:
$(RM) tools/.*mdlintstamp
cd tools/node-lint-md-cli-rollup && npm install
cd tools/node-lint-md-cli-rollup && npm run build-node

Expand All @@ -1177,28 +1178,23 @@ lint-md-clean:
lint-md-build:
$(warning "Deprecated no-op target 'lint-md-build'")

LINT_MD_DOC_FILES = $(shell find doc -type f -name '*.md')
run-lint-doc-md = tools/lint-md.js -q -f $(LINT_MD_DOC_FILES)
# Lint all changed markdown files under doc/
tools/.docmdlintstamp: $(LINT_MD_DOC_FILES)
@echo "Running Markdown linter on docs..."
@$(call available-node,$(run-lint-doc-md))
@touch $@
ifeq ("$(wildcard tools/.mdlintstamp)","")
LINT_MD_NEWER =
else
LINT_MD_NEWER = -newer tools/.mdlintstamp
endif

LINT_MD_TARGETS = src lib benchmark test tools/doc tools/icu
LINT_MD_ROOT_DOCS := $(wildcard *.md)
LINT_MD_MISC_FILES := $(shell find $(LINT_MD_TARGETS) -type f \
! -path '*node_modules*' ! -path 'test/fixtures/*' -name '*.md') \
$(LINT_MD_ROOT_DOCS)
run-lint-misc-md = tools/lint-md.js -q -f $(LINT_MD_MISC_FILES)
# Lint other changed markdown files maintained by us
tools/.miscmdlintstamp: $(LINT_MD_MISC_FILES)
@echo "Running Markdown linter on misc docs..."
@$(call available-node,$(run-lint-misc-md))
LINT_MD_TARGETS = doc src lib benchmark test tools/doc tools/icu $(wildcard *.md)
LINT_MD_FILES = $(shell find $(LINT_MD_TARGETS) -type f \
! -path '*node_modules*' ! -path 'test/fixtures/*' -name '*.md' \
$(LINT_MD_NEWER))
run-lint-md = tools/lint-md.js -q -f --no-stdout $(LINT_MD_FILES)
# Lint all changed markdown files maintained by us
tools/.mdlintstamp: $(LINT_MD_FILES)
@echo "Running Markdown linter..."
@$(call available-node,$(run-lint-md))
@touch $@

tools/.mdlintstamp: tools/.miscmdlintstamp tools/.docmdlintstamp

.PHONY: lint-md
# Lints the markdown documents maintained by us in the codebase.
lint-md: | tools/.mdlintstamp
Expand Down

0 comments on commit 9a41ced

Please sign in to comment.