diff --git a/Makefile b/Makefile index 89739f3eadeb45..0489fe0f572367 100644 --- a/Makefile +++ b/Makefile @@ -656,6 +656,23 @@ available-node = \ run-npm-install = $(PWD)/$(NPM) install --production +find-missing-modules = \ + cat package.json \ + | sed -n -e '/dependencies/,/}/ p' \ + | sed -n -e '/"/,/":/ p' \ + | sed '1d' \ + | sed 's/[",]//g' \ + | cut -f1 -d":"\ + | while read dependency; \ + do \ + if [ ! -d node_modules/$$dependency ]; then \ + echo "The package $$dependency is missing on the package.json related to $(1)"; \ + echo "To install it first run: $ make lint-md-clean"; \ + echo "To install (requires internet access) run: $ make lint-md-build"; \ + exit 1; \ + fi \ + done + tools/doc/node_modules/js-yaml/package.json: cd tools/doc && $(call available-node,$(run-npm-install)) @@ -1072,6 +1089,16 @@ lint-md-build: tools/remark-cli/node_modules \ .PHONY: lint-md ifneq ("","$(wildcard tools/remark-cli/node_modules/)") +tools/find-missing-dependencies/remark-cli: \ + tools/remark-cli/package.json + @echo "Checking that all the dependencies are installed on remark-cli" + @cd tools/remark-cli && $(call find-missing-modules,remark-cli) + +tools/find-missing-dependencies/remark-preset-lint-node: \ + tools/remark-preset-lint-node/package.json + @echo "Checking that all the dependencies are installed on remark-preset-lint-node" + @cd tools/remark-preset-lint-node && $(call find-missing-modules,remark-preset-lint-node) + LINT_MD_DOC_FILES = $(shell ls doc/**/*.md) run-lint-doc-md = tools/remark-cli/cli.js -q -f $(LINT_MD_DOC_FILES) # Lint all changed markdown files under doc/ @@ -1091,7 +1118,10 @@ tools/.miscmdlintstamp: $(LINT_MD_MISC_FILES) @$(call available-node,$(run-lint-misc-md)) @touch $@ -tools/.mdlintstamp: tools/.miscmdlintstamp tools/.docmdlintstamp +tools/.mdlintstamp: tools/find-missing-dependencies/remark-cli \ + tools/find-missing-dependencies/remark-preset-lint-node \ + tools/.miscmdlintstamp \ + tools/.docmdlintstamp # Lints the markdown documents maintained by us in the codebase. lint-md: | tools/.mdlintstamp