[tox] minversion = 3.1 envlist = py39,pep8 skipsdist = True ignore_basepython_conflict = True [testenv] usedevelop = True install_command = pip install {opts} {packages} deps = -r{toxinidir}/requirements.txt commands = stestr run {posargs} stestr slowest [testenv:pep8] commands = doc8 doc/source README.rst [testenv:venv] deps = -r{toxinidir}/requirements.txt commands = {posargs} # This env is invoked in the periodic pipeline and is therefore responsible to # build all relevant docs at once. [testenv:docs] deps = -r{toxinidir}/doc/requirements.txt allowlist_externals = mkdir cp sh rm sphinx-build commands = rm -rf doc/build/html doc/build/doctrees sphinx-build -a -E -W -d doc/build/doctrees -b html doc/source doc/build/html {%- for doc in docs %} {[testenv:{{ doc.type }}]commands} {[testenv:json-{{ doc.type }}]commands} {%- endfor %} [testenv:docs-pdf] deps = -r{toxinidir}/doc/requirements.txt allowlist_externals = rm mkdir make bash cp commands = mkdir -p doc/build/pdf {%- for doc in docs %} {%- if doc.pdf_name %} {[testenv:{{ doc.type }}-pdf-docs]commands} {%- endif %} {%- endfor %} {% for doc in docs -%} {% set loc = doc.rst_location | replace('/source', '') %} # HTML version [testenv:{{ doc.type }}] deps = -r{toxinidir}/doc/requirements.txt allowlist_externals = cp mkdir commands = sphinx-build -W --keep-going -b html {{ loc }}/source doc/build/html/{{ doc.type }} {%- if doc.type == 'api-ref' %} mkdir -p api-ref/build/html cp -av doc/build/html/api-ref api-ref/build/html {%- elif doc.type == 'umn' %} mkdir -p umn/build/html cp -av doc/build/html/umn umn/build/html {%- elif doc.type == 'dev-guide' %} mkdir -p dev_guide/build/html cp -av doc/build/html/dev-guide dev_guide/build/html {%- endif %} # Json version (for search) [testenv:json-{{ doc.type }}] deps = -r{toxinidir}/doc/requirements.txt allowlist_externals = cp mkdir sh commands = sphinx-build -W --keep-going -b json {{ loc }}/source doc/build/json/{{ doc.type }} # Drop data useless for the search - wrap it also with sh/xargs due to bugs # in tox sh -c "find doc/build/json -type d -and '(' -name '_images' -or -name '_static' -or -name '_sources' ')' -print0 | xargs -0 rm -rf" {%- if doc.type == 'api-ref' %} mkdir -p api-ref/build/json cp -av doc/build/json/api-ref api-ref/build/json {%- elif doc.type == 'umn' %} mkdir -p umn/build/json cp -av doc/build/json/umn umn/build/json {%- elif doc.type == 'dev-guide' %} mkdir -p dev_guide/build/json cp -av doc/build/json/dev-guide dev_guide/build/json {%- endif %} {% if doc.pdf_name -%} # PDF version [testenv:{{ doc.type }}-pdf-docs] deps = -r{toxinidir}/doc/requirements.txt allowlist_externals = rm mkdir make bash cp commands = rm -rf {{ loc }}/build/pdf sphinx-build -W --keep-going -b latex {{ loc }}/source {{ loc }}/build/pdf/ bash -c "for f in {{ loc }}/build/pdf/*.gif; do convert $f $\{f/%gif/png\}; done || true" bash -c "for f in {{ loc }}/build/pdf/*.tex; do sed -iorig 's/\.gif//g' $f; done" make -C {{ loc }}/build/pdf mkdir -p doc/build/pdf cp {{ loc }}/build/pdf/{{ doc.pdf_name }}.pdf doc/build/pdf/ {% endif %} {% endfor %} [doc8] ignore = D001 extensions = .rst, .yaml