[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
  {[testenv:api-ref]commands}
  {[testenv:json-api-ref]commands}
  {[testenv:operation-guide]commands}
  {[testenv:json-operation-guide]commands}
  {[testenv:operation-guide-lts]commands}
  {[testenv:json-operation-guide-lts]commands}
  {[testenv:umn]commands}
  {[testenv:json-umn]commands}

[testenv:docs-pdf]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  rm
  mkdir
  make
  bash
  cp
commands =
  mkdir -p doc/build/pdf
  {[testenv:api-ref-pdf-docs]commands}
  {[testenv:operation-guide-pdf-docs]commands}
  {[testenv:operation-guide-lts-pdf-docs]commands}
  {[testenv:umn-pdf-docs]commands}


# HTML version
[testenv:api-ref]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
commands =
  sphinx-build -W --keep-going -b html api-ref/source doc/build/html/api-ref
  mkdir -p api-ref/build/html
  cp -av doc/build/html/api-ref api-ref/build/html

# Json version (for search)
[testenv:json-api-ref]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
  sh
commands =
  sphinx-build -W --keep-going -b json api-ref/source doc/build/json/api-ref
  # 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"
  mkdir -p api-ref/build/json
  cp -av doc/build/json/api-ref api-ref/build/json

# PDF version
[testenv:api-ref-pdf-docs]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  rm
  mkdir
  make
  bash
  cp
commands =
  rm -rf api-ref/build/pdf
  sphinx-build -W --keep-going -b latex api-ref/source api-ref/build/pdf/
  bash -c "for f in api-ref/build/pdf/*.gif; do convert $f $\{f/%gif/png\}; done || true"
  bash -c "for f in api-ref/build/pdf/*.tex; do sed -iorig 's/\.gif//g' $f; done"
  make -C api-ref/build/pdf
  mkdir -p doc/build/pdf
  cp api-ref/build/pdf/mrs-api-ref.pdf doc/build/pdf/


# HTML version
[testenv:operation-guide]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
commands =
  sphinx-build -W --keep-going -b html doc/component-operation-guide/source doc/build/html/operation-guide

# Json version (for search)
[testenv:json-operation-guide]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
  sh
commands =
  sphinx-build -W --keep-going -b json doc/component-operation-guide/source doc/build/json/operation-guide
  # 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"

# PDF version
[testenv:operation-guide-pdf-docs]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  rm
  mkdir
  make
  bash
  cp
commands =
  rm -rf doc/component-operation-guide/build/pdf
  sphinx-build -W --keep-going -b latex doc/component-operation-guide/source doc/component-operation-guide/build/pdf/
  bash -c "for f in doc/component-operation-guide/build/pdf/*.gif; do convert $f $\{f/%gif/png\}; done || true"
  bash -c "for f in doc/component-operation-guide/build/pdf/*.tex; do sed -iorig 's/\.gif//g' $f; done"
  make -C doc/component-operation-guide/build/pdf
  mkdir -p doc/build/pdf
  cp doc/component-operation-guide/build/pdf/mrs-component-operation-guide.pdf doc/build/pdf/


# HTML version
[testenv:operation-guide-lts]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
commands =
  sphinx-build -W --keep-going -b html doc/component-operation-guide-lts/source doc/build/html/operation-guide-lts

# Json version (for search)
[testenv:json-operation-guide-lts]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
  sh
commands =
  sphinx-build -W --keep-going -b json doc/component-operation-guide-lts/source doc/build/json/operation-guide-lts
  # 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"

# PDF version
[testenv:operation-guide-lts-pdf-docs]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  rm
  mkdir
  make
  bash
  cp
commands =
  rm -rf doc/component-operation-guide-lts/build/pdf
  sphinx-build -W --keep-going -b latex doc/component-operation-guide-lts/source doc/component-operation-guide-lts/build/pdf/
  bash -c "for f in doc/component-operation-guide-lts/build/pdf/*.gif; do convert $f $\{f/%gif/png\}; done || true"
  bash -c "for f in doc/component-operation-guide-lts/build/pdf/*.tex; do sed -iorig 's/\.gif//g' $f; done"
  make -C doc/component-operation-guide-lts/build/pdf
  mkdir -p doc/build/pdf
  cp doc/component-operation-guide-lts/build/pdf/mrs-component-operation-guide-lts.pdf doc/build/pdf/


# HTML version
[testenv:umn]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
commands =
  sphinx-build -W --keep-going -b html umn/source doc/build/html/umn
  mkdir -p umn/build/html
  cp -av doc/build/html/umn umn/build/html

# Json version (for search)
[testenv:json-umn]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  cp
  mkdir
  sh
commands =
  sphinx-build -W --keep-going -b json umn/source doc/build/json/umn
  # 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"
  mkdir -p umn/build/json
  cp -av doc/build/json/umn umn/build/json

# PDF version
[testenv:umn-pdf-docs]
deps = -r{toxinidir}/doc/requirements.txt
allowlist_externals =
  rm
  mkdir
  make
  bash
  cp
commands =
  rm -rf umn/build/pdf
  sphinx-build -W --keep-going -b latex umn/source umn/build/pdf/
  bash -c "for f in umn/build/pdf/*.gif; do convert $f $\{f/%gif/png\}; done || true"
  bash -c "for f in umn/build/pdf/*.tex; do sed -iorig 's/\.gif//g' $f; done"
  make -C umn/build/pdf
  mkdir -p doc/build/pdf
  cp umn/build/pdf/mrs-umn.pdf doc/build/pdf/



[doc8]
ignore = D001
extensions = .rst, .yaml