#######################################################################################
# Copyright ETSI Contributors and Others.
#
# 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.
#######################################################################################

[tox]
envlist = black, flake8, pylint, pylint-webhook

[tox:jenkins]
toxworkdir = /tmp/.tox

[testenv]
usedevelop = True
basepython = python3.10
setenv = VIRTUAL_ENV={envdir}
         PYTHONDONTWRITEBYTECODE = 1
deps =  -r{toxinidir}/requirements.txt
parallel_show_output = true


#######################################################################################
[testenv:black]
deps = black==25.12.0
skip_install = true
commands =
        black --check --diff src setup.py
        black --check --diff osm_webhook_translator


#######################################################################################
[testenv:cover]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dev.txt
        -r{toxinidir}/requirements-test.txt
allowlist_externals = sh
commands =
        sh -c 'rm -f nosetests.xml'
        coverage erase
        nose2 -C --coverage src -s src
        sh -c 'mv .coverage .coverage_ngsa'
        nose2 -C --coverage osm_webhook_translator -s osm_webhook_translator
        sh -c 'mv .coverage .coverage_webhook_translator'
        coverage report --omit='*tests*'
        coverage html -d ./cover --omit='*tests*'
        coverage xml -o coverage.xml --omit='*tests*'


#######################################################################################
[testenv:flake8]
deps =  flake8==7.0.0
        flake8-import-order
        setuptools>=61
        setuptools_scm==8.2.0
commands =
        flake8 src setup.py
        flake8 osm_webhook_translator


#######################################################################################
[testenv:pylint]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dev.txt
        -r{toxinidir}/requirements-test.txt
        pylint
skip_install = true
commands =
        pylint -E src setup.py


[testenv:pylint-webhook]
changedir = {toxinidir}/osm_webhook_translator
deps =  -r{toxinidir}/osm_webhook_translator/requirements.txt
        pylint
skip_install = true
commands =
        pylint -E src setup.py


#######################################################################################
[testenv:safety]
setenv =
        LC_ALL=C.UTF-8
        LANG=C.UTF-8
deps =  {[testenv]deps}
        safety
commands =
        - safety check --full-report


#######################################################################################
[testenv:pip-compile]
deps =  pip-tools==6.13.0
skip_install = true
allowlist_externals =
        bash
        [
commands =
        bash -c "for file in requirements*.in ; do \
        UNSAFE="" ; \
        if [[ $file =~ 'dist' ]] ; then UNSAFE='--allow-unsafe' ; fi ; \
        pip-compile -rU --resolver=backtracking --no-header $UNSAFE $file ;\
        out=`echo $file | sed 's/.in/.txt/'` ; \
        sed -i -e '1 e head -16 tox.ini' $out ;\
        done"
        bash -c "for file in osm_webhook_translator/requirements*.in ; do \
        UNSAFE="" ; \
        if [[ $file =~ 'dist' ]] ; then UNSAFE='--allow-unsafe' ; fi ; \
        pip-compile --resolver=backtracking -rU --no-header $UNSAFE $file ;\
        out=`echo $file | sed 's/.in/.txt/'` ; \
        sed -i -e '1 e head -16 tox.ini' $out ;\
        done"


#######################################################################################
[testenv:dist_ng_sa]
deps =  {[testenv]deps}
        -r{toxinidir}/requirements-dist.txt
allowlist_externals = sh
commands =
        sh -c 'cp requirements.txt src/osm_ngsa/requirements.txt'
        sh -c 'cp README.rst src/osm_ngsa/README.rst'
        python3 setup.py --command-packages=stdeb.command sdist_dsc
        sh -c 'cd deb_dist/osm-ngsa*/ && dpkg-buildpackage -rfakeroot -uc -us'
        sh -c 'rm src/osm_ngsa/requirements.txt'
        sh -c 'rm src/osm_ngsa/README.rst'


#######################################################################################
[testenv:dist_webhook_translator]
deps =  -r{toxinidir}/osm_webhook_translator/requirements.txt
        -r{toxinidir}/osm_webhook_translator/requirements-dist.txt
allowlist_externals = sh
commands =
        sh -c 'cp src/osm_ngsa/_version.py osm_webhook_translator/src/osm_webhook_translator/_version.py'
        sh -c 'cd osm_webhook_translator && cp requirements.txt src/osm_webhook_translator/requirements.txt'
        sh -c 'cd osm_webhook_translator && cp README.rst src/osm_webhook_translator/README.rst'
        sh -c 'cd osm_webhook_translator && python3 setup.py --command-packages=stdeb.command sdist_dsc'
        sh -c 'cd osm_webhook_translator/deb_dist/osm-webhook-translator*/ && dpkg-buildpackage -rfakeroot -uc -us'
        sh -c 'rm osm_webhook_translator/src/osm_webhook_translator/requirements.txt'
        sh -c 'rm osm_webhook_translator/src/osm_webhook_translator/README.rst'


#######################################################################################
[flake8]
ignore =
        W291,
        W293,
        W503,
        W605,
        E123,
        E125,
        E203,
        E226,
        E241,
        E501,
exclude =
        .git,
        __pycache__,
        .tox,
max-line-length = 120
show-source = True
builtins = _
import-order-style = google
