diff --git a/.gitignore b/.gitignore index cdd3941dee0..55909288176 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,8 @@ docs/docsite/rst/cli/ansible.rst docs/docsite/rst/dev_guide/collections_galaxy_meta.rst docs/docsite/rst/dev_guide/testing/sanity/index.rst.new docs/docsite/rst/modules/*.rst +docs/docsite/rst/collections/*.rst +docs/docsite/rst/collections/*/*.rst docs/docsite/rst/playbooks_directives.rst docs/docsite/rst/plugins_by_category.rst docs/docsite/rst/plugins/*/*.rst diff --git a/Makefile b/Makefile index 79110d8f075..4c504a858a0 100644 --- a/Makefile +++ b/Makefile @@ -277,7 +277,7 @@ linkcheckdocs: .PHONY: generate_rst generate_rst: lib/ansible/cli/*.py mkdir -p ./docs/man/man1/ ; \ - PYTHONPATH=./lib $(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py + $(GENERATE_CLI) --template-file=docs/templates/man.j2 --output-dir=docs/man/man1/ --output-format man lib/ansible/cli/*.py docs: generate_rst diff --git a/docs/docsite/Makefile b/docs/docsite/Makefile index 3b0b512b243..8993da1e3e5 100644 --- a/docs/docsite/Makefile +++ b/docs/docsite/Makefile @@ -1,6 +1,6 @@ OS := $(shell uname -s) SITELIB = $(shell python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"): -PLUGIN_FORMATTER=../../hacking/build-ansible.py document-plugins +PLUGIN_FORMATTER=../../hacking/build-ansible.py docs-build TESTING_FORMATTER=../bin/testing_formatter.sh KEYWORD_DUMPER=../../hacking/build-ansible.py document-keywords CONFIG_DUMPER=../../hacking/build-ansible.py document-config @@ -12,23 +12,35 @@ else CPUS ?= $(shell nproc) endif -# Sets the build output directory if it's not already specified +# Sets the build output directory for the main docsite if it's not already specified ifndef BUILDDIR BUILDDIR = _build endif -MODULE_ARGS= -ifdef MODULES - MODULE_ARGS = -l $(MODULES) -endif - +# Backwards compat for separate VARS PLUGIN_ARGS= +ifdef MODULES +ifndef PLUGINS + PLUGIN_ARGS = -l $(MODULES) +else + PLUGIN_ARGS = -l $(MODULES),$(PLUGINS) +endif +else ifdef PLUGINS PLUGIN_ARGS = -l $(PLUGINS) endif +endif + DOC_PLUGINS ?= become cache callback cliconf connection httpapi inventory lookup netconf shell strategy vars +PYTHON=python +# fetch version from project release.py as single source-of-truth +VERSION := $(shell $(PYTHON) ../../packaging/release/versionhelper/version_helper.py --raw || echo error) +ifeq ($(findstring error,$(VERSION)), error) +$(error "version_helper failed") +endif + assertrst: ifndef rst $(error specify document or pattern with rst=somefile.rst) @@ -38,17 +50,24 @@ all: docs docs: htmldocs -generate_rst: collections_meta config cli keywords modules plugins testing +generate_rst: collections_meta config cli keywords plugins testing +base_generate_rst: collections_meta config cli keywords base_plugins testing htmldocs: generate_rst CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx html +base_htmldocs: base_generate_rst + CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx html + singlehtmldocs: generate_rst CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx singlehtml +base_singlehtmldocs: base_generate_rst + CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx singlehtml + linkcheckdocs: generate_rst CPUS=$(CPUS) $(MAKE) -f Makefile.sphinx linkcheck - + webdocs: docs #TODO: leaving htmlout removal for those having older versions, should eventually be removed also @@ -58,7 +77,7 @@ clean: -rm -rf $(BUILDDIR)/html -rm -rf htmlout -rm -rf module_docs - -rm -rf _build + -rm -rf $(BUILDDIR) -rm -f .buildinfo -rm -f objects.inv -rm -rf *.doctrees @@ -70,43 +89,44 @@ clean: find . -type f \( -name "*~" -or -name "#*" \) -delete find . -type f \( -name "*.swp" \) -delete @echo "Cleaning up generated rst" - rm -f rst/modules/*_by_category.rst - rm -f rst/modules/list_of_*.rst - rm -f rst/modules/*_maintained.rst - rm -f rst/modules/*_module.rst - rm -f rst/modules/*_plugin.rst rm -f rst/playbooks_directives.rst - rm -f rst/plugins/*/*.rst rm -f rst/reference_appendices/config.rst rm -f rst/reference_appendices/playbooks_keywords.rst rm -f rst/dev_guide/collections_galaxy_meta.rst rm -f rst/cli/*.rst + rm -rf rst/collections/* + @echo "Cleaning up legacy generated rst locations" + rm -rf rst/modules + rm -f rst/plugins/*/*.rst .PHONY: docs clean collections_meta: ../templates/collections_galaxy_meta.rst.j2 - PYTHONPATH=../../lib $(COLLECTION_DUMPER) --template-file=../templates/collections_galaxy_meta.rst.j2 --output-dir=rst/dev_guide/ ../../lib/ansible/galaxy/data/collections_galaxy_meta.yml + $(COLLECTION_DUMPER) --template-file=../templates/collections_galaxy_meta.rst.j2 --output-dir=rst/dev_guide/ ../../lib/ansible/galaxy/data/collections_galaxy_meta.yml # TODO: make generate_man output dir cli option cli: mkdir -p rst/cli - PYTHONPATH=../../lib $(GENERATE_CLI) --template-file=../templates/cli_rst.j2 --output-dir=rst/cli/ --output-format rst ../../lib/ansible/cli/*.py + $(GENERATE_CLI) --template-file=../templates/cli_rst.j2 --output-dir=rst/cli/ --output-format rst ../../lib/ansible/cli/*.py keywords: ../templates/playbooks_keywords.rst.j2 - PYTHONPATH=../../lib $(KEYWORD_DUMPER) --template-dir=../templates --output-dir=rst/reference_appendices/ ./keyword_desc.yml + $(KEYWORD_DUMPER) --template-dir=../templates --output-dir=rst/reference_appendices/ ./keyword_desc.yml config: ../templates/config.rst.j2 - PYTHONPATH=../../lib $(CONFIG_DUMPER) --template-file=../templates/config.rst.j2 --output-dir=rst/reference_appendices/ ../../lib/ansible/config/base.yml + $(CONFIG_DUMPER) --template-file=../templates/config.rst.j2 --output-dir=rst/reference_appendices/ ../../lib/ansible/config/base.yml -modules: ../templates/plugin.rst.j2 - PYTHONPATH=../../lib $(PLUGIN_FORMATTER) -t rst --template-dir=../templates --module-dir=../../lib/ansible/modules -o rst/modules/ $(MODULE_ARGS) +# For now, if we're building on devel, just build base docs. In the future we'll want to build docs that +# are the latest versions on galaxy (using a different antsibull-docs subcommand) +plugins: + if expr "$(VERSION)" : '.*[.]dev[0-9]\+$$' &> /dev/null; then \ + $(PLUGIN_FORMATTER) base -o rst $(PLUGIN_ARGS);\ + else \ + $(PLUGIN_FORMATTER) full -o rst $(PLUGIN_ARGS);\ + fi -plugins: ../templates/plugin.rst.j2 - @echo "looping over doc plugins" - for plugin in $(DOC_PLUGINS); \ - do \ - PYTHONPATH=../../lib $(PLUGIN_FORMATTER) -t rst --plugin-type $$plugin --template-dir=../templates --module-dir=../../lib/ansible/plugins/$$plugin -o rst $(PLUGIN_ARGS); \ - done +# This only builds the plugin docs included with ansible-base +base_plugins: + $(PLUGIN_FORMATTER) base -o rst $(PLUGIN_ARGS);\ testing: $(TESTING_FORMATTER) diff --git a/docs/docsite/_themes/sphinx_rtd_theme/ansible_banner.html b/docs/docsite/_themes/sphinx_rtd_theme/ansible_banner.html index 7ca2bd4a0fd..ba889e7186e 100644 --- a/docs/docsite/_themes/sphinx_rtd_theme/ansible_banner.html +++ b/docs/docsite/_themes/sphinx_rtd_theme/ansible_banner.html @@ -10,26 +10,27 @@ element.appendChild(para); document.write(''); } - - // Create a banner if we're not the latest version - current_url = window.location.href; - if ((current_url.search("latest") > -1) || (current_url.search("/{{ latest_version }}/") > -1)) { - // no banner for latest release - } else if (current_url.search("devel") > -1) { - document.write(''); - } else { - document.write(''); - } + {% if (not READTHEDOCS) and (available_versions is defined) %} + // Create a banner if we're not the latest version + current_url = window.location.href; + if ((current_url.search("latest") > -1) || (current_url.search("/{{ latest_version }}/") > -1)) { + // no banner for latest release + } else if (current_url.search("devel") > -1) { + document.write(''); + } else { + document.write(''); + } + {% endif %} diff --git a/docs/docsite/_themes/sphinx_rtd_theme/ansible_versions.html b/docs/docsite/_themes/sphinx_rtd_theme/ansible_versions.html index 06a0271eda0..3d3d7fc682d 100644 --- a/docs/docsite/_themes/sphinx_rtd_theme/ansible_versions.html +++ b/docs/docsite/_themes/sphinx_rtd_theme/ansible_versions.html @@ -1,7 +1,7 @@ {# Creates dropdown version selection in the top-left navigation. #}
- {% if not READTHEDOCS %} + {% if (not READTHEDOCS) and (available_versions is defined) %}