# tox (https://tox.readthedocs.io/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.

[tox]
envlist = py36
# There is no proper way to install the app for now (i.e. setup.py)
skipsdist = True

[testenv]
deps =
    -rrequirements.txt
commands =
    python manage.py test {posargs}

# Test coverage
[testenv:coverage]
deps =
    {[testenv]deps}
    coverage
commands =
    coverage run manage.py test
    coverage report

# Test coverage with html report
[testenv:coverage-html]
deps =
    {[testenv:coverage]deps}
commands =
    {[testenv:coverage]commands}
    coverage html

# Linters
[linters]
include_dirs = crashreports crashreport_stats hiccup

[testenv:flake8]
deps =
    -rrequirements-dev-flake8.txt
commands =
    flake8 {posargs: {[linters]include_dirs}}

[testenv:pylint]
deps =
    -rrequirements.txt
    -rrequirements-dev-pylint.txt
commands =
    pylint {posargs: {[linters]include_dirs}}

[testenv:linters]
deps =
    {[testenv:flake8]deps}
    {[testenv:pylint]deps}
commands =
    {[testenv:flake8]commands}
    {[testenv:pylint]commands}

# Git pre-commit hooks: Run formatter and linters
[testenv:pre-commit-hooks]
deps =
    -rrequirements.txt
    -rrequirements-dev.txt
passenv = GIT_INDEX_FILE
commands =
    {toxinidir}/tools/hooks/pre-commit.d/pre-commit-black.sh
    python {toxinidir}/tools/hooks/pre-commit.d/pre-commit-flake8.py
    {toxinidir}/tools/hooks/pre-commit.d/pre-commit-pylint.sh

# Flake8 configuration
[flake8]
format = ${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s
max-complexity = 10
max-line-length = 80

# Documentation
# Shared commands for both docs options
[docs]
swagger_version = 1.3.3
commands =
    python manage.py generate_swagger --overwrite documentation/hiccup-api.json
    wget -nc https://jcenter.bintray.com/io/github/swagger2markup/swagger2markup-cli/{[docs]swagger_version}/swagger2markup-cli-{[docs]swagger_version}.jar
whitelist_externals=
    java
    wget

# Create markdown docs
[testenv:docs]
deps = {[testenv]deps}
commands =
    {[docs]commands}
    java -jar swagger2markup-cli-{[docs]swagger_version}.jar convert \
        -f documentation/api-endpoints \
        -i documentation/hiccup-api.json \
        -c documentation/swagger.properties
whitelist_externals = {[docs]whitelist_externals}

# Create HTML docs
[testenv:docs-html]
deps = {[testenv]deps}
commands =
    {[docs]commands}
    java -jar swagger2markup-cli-{[docs]swagger_version}.jar convert \
        -f documentation/api-endpoints \
        -i documentation/hiccup-api.json \
        -c documentation/swagger-asciidoc.properties
    asciidoctor documentation/api-endpoints.adoc
whitelist_externals =
    {[docs]whitelist_externals}
    asciidoctor