[tox]
isolated_build = true
skipsdist = true
envlist = check, apply-check, docs, tests, build, changelog

[testenv]
allowlist_externals = poetry, ./test_keycloak_init.sh
commands_pre =
    poetry install --sync

[testenv:check]
commands =
    black --check --diff src/keycloak tests docs
    isort -c --df src/keycloak tests docs
    flake8 src/keycloak tests docs
    codespell src tests docs

[testenv:apply-check]
commands =
    black -C src/keycloak tests docs
    black src/keycloak tests docs
    isort src/keycloak tests docs

[testenv:docs]
commands =
    sphinx-build -T -E -W -b html -d _build/doctrees -D language=en ./docs/source _build/html

[testenv:tests]
setenv = file|tox.env
passenv = CONTAINER_HOST,KEYCLOAK_DOCKER_IMAGE_TAG
commands =
    ./test_keycloak_init.sh "pytest -vv --cov=keycloak --cov-report term-missing {posargs}"

[testenv:build]
commands =
    poetry build --format sdist
    poetry build --format wheel

[testenv:changelog]
setenv = file|tox.env
passenv = CONTAINER_HOST
commands =
    cz changelog

[flake8]
max-line-length = 99
docstring-convention = all
ignore = D203, D213, W503, E231
docstring_style = sphinx

[darglint]
enable = DAR104