[tox]
minversion = 1.6
envlist = checkniceness,checkbuild
skipsdist = True

[testenv]
basepython=python2.7
setenv =
   VIRTUAL_ENV={envdir}
deps = -r{toxinidir}/test-requirements.txt
whitelist_externals =
  bash
  cp
  mkdir
  rm
  rsync

[testenv:venv]
commands = {posargs}

[testenv:linkcheck]
commands =
  {toxinidir}/tools/build-all-rst.sh --linkcheck

[testenv:checkniceness]
commands =
  flake8
  doc8 doc
  bash -c "find doc -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
  {toxinidir}/tools/glossary-sort.sh

[testenv:checkbuild]
commands =
  {toxinidir}/tools/publishdocs.sh build

[testenv:docs]
commands =
  {toxinidir}/tools/build-all-rst.sh

[testenv:pdfs]
commands =
  {toxinidir}/tools/build-all-rst.sh --pdf

[testenv:install-guides]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh {posargs}

[testenv:install-guide-debconf]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh debconf {posargs}

[testenv:install-guide-debian]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh debian {posargs}

[testenv:install-guide-obs]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh obs {posargs}

[testenv:install-guide-rdo]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh rdo {posargs}

[testenv:install-guide-ubuntu]
commands =
  {toxinidir}/tools/build-install-guides-rst.sh ubuntu {posargs}

[testenv:build]
commands =
  {toxinidir}/tools/build-rst.sh \
    doc/{posargs} \
    --build build \
    --target {posargs}

[testenv:publishdocs]
# Prepare all documents (except www subdir) so that they can get
# published on docs.openstack.org with just copying publish-docs/*
# over.
commands =
  {toxinidir}/tools/publishdocs.sh publish

[testenv:checklang]
# Generatedocbook needs xml2po which cannot be installed
# in the venv. Since it's installed in the system, let's
# use sitepackages.
sitepackages=True
whitelist_externals = doc-tools-check-languages
commands =
  doc-tools-check-languages doc-tools-check-languages.conf test all

[testenv:buildlang]
# Run as "tox -e buildlang -- $LANG"
# Generatedocbook needs xml2po which cannot be installed
# in the venv. Since it's installed in the system, let's
# use sitepackages.
sitepackages=True
whitelist_externals = doc-tools-check-languages
commands =
  doc-tools-check-languages doc-tools-check-languages.conf test {posargs}

[testenv:publishlang]
# Generatedocbook needs xml2po which cannot be installed
# in the venv. Since it's installed in the system, let's
# use sitepackages.
sitepackages=True
whitelist_externals = doc-tools-check-languages
commands =
  doc-tools-check-languages doc-tools-check-languages.conf publish all

[testenv:generatepot-rst]
# Generate POT files for translation, needs {posargs} like:
# tox -e generatepot-rst -- user-guide
commands = {toxinidir}/tools/generatepot-rst.sh openstack-manuals 1 {posargs}

[testenv:releasenotes]
commands =
  sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html

[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files, and develop mode disabled
# explicitly to avoid unnecessarily installing the checked-out repo too (this
# further relies on "tox.skipsdist = True" above).
deps = bindep
commands = bindep test
usedevelop = False

[doc8]
# Settings for doc8:
# Ignore target directories and autogenerated files
ignore-path = doc/*/target,doc/*/build*,doc/install-guide/source/swift-controller-include.txt,doc/install-guide-debconf/source/swift-controller-include.txt,doc/networking-guide/source/shared/*.txt,doc/config-reference/source/tables/*.rst
# File extensions to use
extensions = .rst,.txt
# Maximal line length should be 79 but we have some overlong lines.
# Let's not get far more in.
max-line-length = 79
# Disable some doc8 checks:
# D000: Check RST validity (cannot handle the "linenos" directive)
ignore = D000

[flake8]
show-source = True
builtins = _
exclude=.venv,.git,.tox,dist,*lib/python*,*egg,build,*/source/conf.py