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

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

[testenv:venv]
commands = {posargs}

[testenv:checklinks]
commands = openstack-doc-test --check-links {posargs}

[testenv:checkniceness]
commands =
  openstack-doc-test --check-niceness {posargs}
  doc8 firstapp
  doc8 api-quick-start

[testenv:checksyntax]
commands =
    # WADLs using entity files are not properly handled by
    # openstack-doc-test, we therefore have to check all files that
    # are in the tree for any syntax issues.
    openstack-doc-test --check-syntax --force {posargs}
    # Check that .po and .pot files are valid:
    bash -c "find api* -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"

[testenv:checkdeletions]
commands = openstack-doc-test --check-deletions {posargs}

[testenv:checkbuild]
commands =
  # Build and copy RST Guides
  {toxinidir}/tools/build-all-rst.sh
  # Build DocBook Guides
  openstack-doc-test --check-build {posargs}

[testenv:publishdocs]
# Prepare documents (without www) so that they can get published on
# docs.openstack.org with just copying publish-docs/* over.
commands = true

[testenv:publishdocs-api]
# Prepare documents (without www) so that they can get published on
# developer.openstack.org with just copying publish-docs/api-ref over.
commands =
  openstack-doc-test --check-build --publish --only-book api-ref --only-book api-ref-guides
  # We need to move api-ref-guides to the proper place:
  mv publish-docs/api-ref-guides publish-docs/api-ref/
  # Build and copy RST Guides
  {toxinidir}/tools/build-firstapp-rst.sh
  # Build and copy API Quick Start
  {toxinidir}/tools/build-api-quick-start.sh

[testenv:checklang]
# openstack-generate-docbook 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"
# openstack-generate-docbook 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]
# openstack-generate-docbook needs xml2po which cannot be installed
# in the venv. Since it's installed in the system, let's
# use sitepackages.
# NOTE(jaegerandi): Remove this as soon as job has been removed.
sitepackages=True
# Do nothing for now
commands = true

[testenv:publishlang-api]
# openstack-generate-docbook needs xml2po which cannot be installed
# in the venv. Since it's installed in the system, let's
# use sitepackages.
# Publish translated documents to developer.openstack.org with just
# copying publish-docs/api-ref over.
sitepackages=True
whitelist_externals =
   doc-tools-check-languages
   mkdir
   mv
   rm
commands =
   # Cleanup first - important when this environment runs locally
   # multiple times.
   rm -rf publish-docs
   doc-tools-check-languages doc-tools-check-languages.conf publish all
   # Move directories to proper place, we publish translated
   # quick-start guides at
   # developer.openstack.org/LANG/api-guide/quick-start or
   # developer.openstack.org/draft/LANG/api-guide/quick-start.
   mkdir -p publish-docs/api-ref
   mkdir -p publish-docs/api-ref/de/api-guide
   mkdir -p publish-docs/api-ref/ja/api-guide
   mv publish-docs/de/api-quick-start/ publish-docs/api-ref/de/api-guide/quick-start
   mv publish-docs/ja/api-quick-start/ publish-docs/api-ref/ja/api-guide/quick-start

[testenv:generatepot-rst]
# Generate POT files for translation, needs {posargs} like:
# tox -e generatepot-rst -- firstapp
commands = {toxinidir}/tools/generatepot-rst.sh api-site 0 {posargs}

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

[testenv:firstapp-libcloud]
commands = sphinx-build -E -W -t libcloud firstapp/source firstapp/build-libcloud/html

[testenv:firstapp-jclouds]
commands = sphinx-build -E -W -t jclouds firstapp/source firstapp/build-jclouds/html

[testenv:firstapp-fog]
commands = sphinx-build -E -W -t fog firstapp/source firstapp/build-fog/html

[testenv:firstapp-dotnet]
commands = sphinx-build -E -W -t dotnet firstapp/source firstapp/build-dotnet/html

[testenv:firstapp-pkgcloud]
commands = sphinx-build -E -W -t pkgcloud firstapp/source firstapp/build-pkgcloud/html

[testenv:firstapp-openstacksdk]
commands = sphinx-build -E -W -t openstacksdk firstapp/source firstapp/build-openstacksdk/html

[testenv:firstapp-todos]
commands = sphinx-build -E -W -t libcloud firstapp/source firstapp/build/html

[testenv:firstapp-shade]
commands = sphinx-build -E -W -t shade firstapp/source firstapp/build-shade/html

[testenv:api-quick-start]
commands =
  {toxinidir}/tools/build-api-quick-start.sh

[doc8]
# Settings for doc8:
# Ignore target directories
ignore-path = firstapp/build*,common-rst/
# File extensions to use
extensions = .rst,.txt
# Ignore lines longer than 79 chars
ignore = D001