openstack-manuals/tox.ini

166 lines
5.9 KiB
INI

[tox]
minversion = 1.6
envlist = checkniceness,checksyntax,checkdeletions,checkbuild,checklang,checklinks
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:checklinks]
commands = openstack-doc-test --check-links {posargs}
[testenv:checkniceness]
commands =
openstack-doc-test --check-niceness {posargs}
flake8
doc8 doc
[testenv:checksyntax]
commands =
openstack-doc-test --check-syntax {posargs}
# Check that .po and .pot files are valid:
bash -c "find doc -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 first the www pages so that openstack-doc-test creates a link to
# www/www-index.html.
mkdir -p publish-docs/www
python tools/www-generator.py --source-directory www/ --output-directory publish-docs/www/
cp www/www-index.html publish-docs/
rsync -a www/static/ publish-docs/www/
# Build and copy RST Guides
# Build both RST User Guides
{toxinidir}/tools/build-user-guides.sh
# Copy RST user-guide
mkdir -p publish-docs/user-guide/
rsync -a doc/user-guides/build/html/ publish-docs/user-guide/
# Copy RST user-guide-admin
mkdir -p publish-docs/user-guide-admin/
rsync -a doc/user-guides/build-admin/html/ publish-docs/user-guide-admin/
# Build RST networking guide
{toxinidir}/tools/glossary2rst.py doc/networking-guide/source/glossary.rst
sphinx-build -E -W doc/networking-guide/source doc/networking-guide/build/html
mkdir -p publish-docs/networking-guide/
rsync -a doc/networking-guide/build/html/ publish-docs/networking-guide/
# Build DocBook Guides
openstack-doc-test --check-build {posargs}
[testenv:docs]
commands =
{toxinidir}/tools/build-user-guides.sh
{toxinidir}/tools/glossary2rst.py doc/networking-guide/source/glossary.rst
sphinx-build -W doc/networking-guide/source doc/networking-guide/build/html
[testenv:network]
commands =
{toxinidir}/tools/glossary2rst.py doc/networking-guide/source/glossary.rst
sphinx-build -W doc/networking-guide/source doc/networking-guide/build/html
[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 =
# Create directory, it might not be here if openstack-doc-test does
# not publish anything.
mkdir -p publish-docs
# We only publish changed manuals.
openstack-doc-test --check-build --publish
# TODO(jaegerandi): Remove the following lines before we branch off
# a kilo branch.
# Do not publish Debian guide
rm -rf publish-docs/draft/install-guide/install/apt-debian
# Publish install-guide and config-reference to /kilo
bash -c "cp -a publish-docs/draft publish-docs/kilo || true"
# Replace links to /draft with links to /kilo/
# This needs bash so that tox does not interpret the *
bash -c "sed -i -e 's|/draft/|/kilo/|g' publish-docs/kilo/*/atom.xml publish-docs/kilo/*/*/*/atom.xml publish-docs/kilo/*/*.html publish-docs/kilo/*/*/*/*/*.html publish-docs/kilo/*/*/*/*.html publish-docs/kilo/*/*/*.html publish-docs/kilo/*/*.html || true"
# END Kilo duplication.
# Build both RST User Guides
{toxinidir}/tools/build-user-guides.sh
# Copy RST user-guide
mkdir -p publish-docs/user-guide/
rsync -a doc/user-guides/build/html/ publish-docs/user-guide/
# Copy RST user-guide-admin
mkdir -p publish-docs/user-guide-admin/
rsync -a doc/user-guides/build-admin/html/ publish-docs/user-guide-admin/
# Build RST Networking Guide
{toxinidir}/tools/glossary2rst.py doc/networking-guide/source/glossary.rst
sphinx-build -W doc/networking-guide/source doc/networking-guide/build/html
# Copy RST Networking Guide
mkdir -p publish-docs/networking-guide/
rsync -a doc/networking-guide/build/html/ publish-docs/networking-guide/
# Now publish www as well, we cannot do this from
# openstack-doc-test. Use rsync so that .htaccess gets also
# copied.
python tools/www-generator.py --source-directory www/ --output-directory publish-docs/
rsync -a www/static/ publish-docs/
# Don't publish this file
rm publish-docs/www-index.html
[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-guides
commands = {toxinidir}/tools/generatepot-rst.sh {posargs}
[doc8]
# Settings for doc8:
# Ignore target directories
ignore-path = doc/*/target,doc/*/build
# File extensions to use
extensions = .rst,.txt
# Disable some doc8 checks:
# D000: Check RST validity (cannot handle lineos directive)
# D001: Ignore lines longer than 79 chars
ignore = D000, D001
[flake8]
show-source = True
# H803 skipped on purpose per list discussion.
# E123, E125 skipped as they are invalid PEP-8.
ignore = E123,E125,H803
builtins = _
exclude=.venv,.git,.tox,dist,*openstack/common*,*lib/python*,*egg,build,doc/common/samples