#  ============LICENSE_START=======================================================
#  Copyright (C) 2024 Ericsson
#  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
#  ================================================================================
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#        http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#
#  SPDX-License-Identifier: Apache-2.0
#  ============LICENSE_END=========================================================

[tox]
minversion = 4.0
envlist =
    docs,
    docs-linkcheck,
skipsdist = true

[testenv:docs]
basepython = python3
deps = -r{toxinidir}/docs/requirements-docs.txt
commands =
    sphinx-build -W -b html -n -d {envtmpdir}/docs/doctrees ./docs/ {toxinidir}/docs/_build/html
    # Generated docs available in {toxinidir}/docs/_build/html

[testenv:docs-linkcheck]
basepython = python3
deps = -r{toxinidir}/docs/requirements-docs.txt
commands = sphinx-build -W -b linkcheck -d {envtmpdir}/docs/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck