#
# Copyright (c) 2019 Intel Corporation
#
# This work is licensed under the terms of the MIT license.
# For a copy, see <https://opensource.org/licenses/MIT>.
#

os: linux
dist: xenial
sudo: false

matrix:
  include:

    - env: TEST="Check code formatting"
      addons:
        apt:
          packages:
            - pep8
            - python-autopep8
            - python-pep8
      script:
        - autopep8 srunner/scenariomanager/*.py --in-place --max-line-length=120
        - autopep8 srunner/scenariomanager/scenarioatomics/*.py --in-place --max-line-length=120
        - autopep8 srunner/scenarios/*.py --in-place --max-line-length=120
        - autopep8 srunner/tools/*.py --in-place --max-line-length=120
        - autopep8 srunner/scenarioconfigs/*.py --in-place --max-line-length=120
        - autopep8 scenario_runner.py --in-place --max-line-length=120
        - autopep8 srunner/autoagents/*.py --in-place --max-line-length=120
        - git diff --quiet HEAD --; if [ ! $? -eq 0 ]; then echo "Code is not autopep8 compliant. Please run code_check_and_formatting.sh"; git diff HEAD --; exit 1; fi
      after_failure:
        - tail --lines=2000 build.log

    - env: TEST="Check static code analysis"
      addons:
        apt:
          packages:
            - python-pip
      before_install:
        - pip2 install --user pylint==1.9.4
        - pip2 install --user -r requirements.txt
      script:
        - pylint --version
        - static_code_quality_passed=1
        - pylint --rcfile=.pylintrc --disable=I srunner/scenariomanager
        - pylint --rcfile=.pylintrc --disable=I srunner/scenarios
        - pylint --rcfile=.pylintrc --disable=I srunner/tools
        - pylint --rcfile=.pylintrc --disable=I srunner/scenarioconfigs
        - pylint --rcfile=.pylintrc --disable=I scenario_runner.py
        - pylint --rcfile=.pylintrc --disable=I srunner/autoagents
        - score=`pylint --rcfile=.pylintrc --disable=I srunner/scenariomanager | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - score=`pylint --rcfile=.pylintrc --disable=I srunner/scenarios | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - score=`pylint --rcfile=.pylintrc --disable=I srunner/tools | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - score=`pylint --rcfile=.pylintrc --disable=I srunner/scenarioconfigs | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - score=`pylint --rcfile=.pylintrc --disable=I scenario_runner.py | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - score=`pylint --rcfile=.pylintrc --disable=I srunner/autoagents | grep -i "rated at" | awk '{print $7}'`; if [ "$score" != "10.00/10" ]; then static_code_quality_passed=0; fi
        - if [ $static_code_quality_passed -eq 0 ]; then echo "Code is not pylint compliant. Please run code_check_and_formatting.sh"; exit 1; fi
      after_failure:
        - tail --lines=2000 build.log

notifications:
  email: false
