diff --git a/Makefile b/Makefile index a043a2a0c..e0d64e4e8 100644 --- a/Makefile +++ b/Makefile @@ -5,9 +5,6 @@ PWD := $(shell pwd) TOOLS_DIR := ./internal/tools MISSPELL_BINARY=bin/misspell MISSPELL = $(TOOLS_DIR)/$(MISSPELL_BINARY) -MARKDOWN_LINK_CHECK=./node_modules/.bin/markdown-link-check -MARKDOWN_LINT=./node_modules/.bin/markdownlint -MARKDOWN_TOC=./node_modules/.bin/markdown-toc # see https://github.com/open-telemetry/build-tools/releases for semconvgen updates # Keep links in semantic_conventions/README.md and .vscode/settings.json in sync! @@ -15,7 +12,7 @@ SEMCONVGEN_VERSION=0.8.0 # TODO: add `yamllint` step to `all` after making sure it works on Mac. .PHONY: all -all: markdownlint markdown-link-check misspell table-check schema-check +all: install-tools markdownlint markdown-link-check misspell table-check schema-check $(MISSPELL): cd $(TOOLS_DIR) && go build -o $(MISSPELL_BINARY) github.com/client9/misspell/cmd/misspell @@ -28,15 +25,13 @@ misspell: $(MISSPELL) misspell-correction: $(MISSPELL) $(MISSPELL) -w $(ALL_DOCS) -$(MARKDOWN_LINK_CHECK): - npm install markdown-link-check - .PHONY: markdown-link-check -markdown-link-check: $(MARKDOWN_LINK_CHECK) - @for f in $(ALL_DOCS); do $(MARKDOWN_LINK_CHECK) --quiet --config .markdown_link_check_config.json $$f; done - -$(MARKDOWN_TOC): - npm install markdown-toc +markdown-link-check: + @if ! npm ls markdown-link-check; then npm install; fi + @for f in $(ALL_DOCS); do \ + npx --no -- markdown-link-check --quiet --config .markdown_link_check_config.json $$f \ + || exit 1; \ + done # This target runs markdown-toc on all files that contain # a comment . @@ -47,22 +42,25 @@ $(MARKDOWN_TOC): # # .PHONY: markdown-toc -markdown-toc: $(MARKDOWN_TOC) +markdown-toc: + @if ! npm ls markdown-toc; then npm install; fi @for f in $(ALL_DOCS); do \ if grep -q '' $$f; then \ echo markdown-toc: processing $$f; \ - $(MARKDOWN_TOC) --no-first-h1 --no-stripHeadingTags -i $$f; \ + npx --no -- markdown-toc --no-first-h1 --no-stripHeadingTags -i $$f || exit 1; \ else \ echo markdown-toc: no TOC markers, skipping $$f; \ fi; \ done -$(MARKDOWN_LINT): - npm install markdownlint-cli@0.31.0 - .PHONY: markdownlint -markdownlint: $(MARKDOWN_LINT) - @for f in $(ALL_DOCS); do echo $$f; $(MARKDOWN_LINT) -c .markdownlint.yaml $$f || exit 1; done +markdownlint: + @if ! npm ls markdownlint; then npm install; fi + @for f in $(ALL_DOCS); do \ + echo $$f; \ + npx --no -p markdownlint-cli markdownlint -c .markdownlint.yaml $$f \ + || exit 1; \ + done .PHONY: install-yamllint install-yamllint: @@ -99,7 +97,7 @@ check: misspell markdownlint markdown-link-check fix: table-generation misspell-correction @echo "All autofixes complete" -# Attempt to install all the tools .PHONY: install-tools -install-tools: $(MISSPELL) $(MARKDOWN_LINT) $(MARKDOWN_LINK_CHECK) $(MARKDOWN_TOC) +install-tools: $(MISSPELL) + npm install @echo "All tools installed" diff --git a/package.json b/package.json new file mode 100644 index 000000000..94e1ead28 --- /dev/null +++ b/package.json @@ -0,0 +1,7 @@ +{ + "devDependencies": { + "markdown-link-check": "^3.9.3", + "markdown-toc": "^1.2.0", + "markdownlint-cli": "0.31.0" + } +}