# All documents to be used in spell check. ALL_DOCS := $(shell find . -type f -name '*.md' -not -path './.github/*' -not -path './node_modules/*' -not -path '*semantic_conventions*' | sort) PWD := $(shell pwd) TOOLS_DIR := ./internal/tools MISSPELL_BINARY=bin/misspell MISSPELL = $(TOOLS_DIR)/$(MISSPELL_BINARY) # 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! SEMCONVGEN_VERSION=0.17.0 # TODO: add `yamllint` step to `all` after making sure it works on Mac. .PHONY: all all: install-tools markdownlint markdown-link-check misspell $(MISSPELL): cd $(TOOLS_DIR) && go build -o $(MISSPELL_BINARY) github.com/client9/misspell/cmd/misspell .PHONY: misspell misspell: $(MISSPELL) $(MISSPELL) -error $(ALL_DOCS) .PHONY: misspell-correction misspell-correction: $(MISSPELL) $(MISSPELL) -w $(ALL_DOCS) .PHONY: markdown-link-check 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 <!-- tocstop -->. # # The recommended way to prepate a .md file for markdown-toc is # to add these comments: # # <!-- toc --> # <!-- tocstop --> .PHONY: markdown-toc markdown-toc: @if ! npm ls markdown-toc; then npm install; fi @for f in $(ALL_DOCS); do \ if grep -q '<!-- tocstop -->' $$f; then \ echo markdown-toc: processing $$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 .PHONY: markdownlint 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: # Using a venv is recommended pip install -U yamllint~=1.26.1 .PHONY: yamllint yamllint: yamllint . # Run all checks in order of speed / likely failure. .PHONY: check check: misspell markdownlint markdown-link-check @echo "All checks complete" # Attempt to fix issues / regenerate tables. .PHONY: fix fix: misspell-correction @echo "All autofixes complete" .PHONY: install-tools install-tools: $(MISSPELL) npm install @echo "All tools installed"