# The MkDocs 2.0 banners of Material for MkDocs and ProperDocs (via mkdocs-redirects) are printed to stderr, not
# logged, so they do not affect --strict; silence them anyway.
export NO_MKDOCS_2_WARNING := true
export DISABLE_MKDOCS_2_WARNING := true

# serve the site locally
serve: style_check
	venv/bin/mkdocs serve

serve_dirty: style_check
	venv/bin/mkdocs serve --dirtyreload

# This target is used in the CI (ci_test_build_documentation).
# This target is used by the docset Makefile.
build: style_check
	venv/bin/mkdocs build --strict

style_check:
	@cd docs ; ../venv/bin/python3 ../scripts/check_structure.py
	@venv/bin/python3 ../docset/generate_docset.py list > /dev/null

# check that all Mermaid diagrams parse (needs Node.js)
# This target is used in the CI (ci_test_documentation_mermaid).
check_mermaid:
	npm ci --prefix scripts/mermaid --ignore-scripts --no-audit --no-fund
	node scripts/mermaid/check_mermaid.mjs docs

# check the links in the documentation files in docs/mkdocs
link_check:
	ENABLED_HTMLPROOFER=true venv/bin/mkdocs build

# check the links in all other Markdown files
link_check_markdowns:
	npx markdown-link-check --progress --alive 200,429 ../../README.md ../../FILES.md ../../.github/*.md

# publish site to GitHub pages (not working in GitHub Actions; need special action)
publish:
	venv/bin/mkdocs gh-deploy --clean --force

# install a Python virtual environment
# This target is used by the docset Makefile.
install_venv: requirements.txt
	python3 -mvenv venv
	venv/bin/pip install --upgrade pip
	venv/bin/pip install -r requirements.txt

# uninstall the virtual environment
uninstall_venv:
	rm -fr venv

update_requirements:
	rm -fr venv_small
	python3 -mvenv venv_small
	venv_small/bin/pip3 install pur
	venv_small/bin/pur -r requirements.txt
	rm -fr venv_small venv
	make install_venv
