language: java
sudo: false

cache:
  apt: true
  directories:
    - ~/.m2

addons:
  apt:
    packages:
      - xsltproc
      - xmlstarlet
      - oracle-java8-installer

branches:
  only:
    - master

install:
  - |
    if [ "${TRAVIS_OS_NAME}" == "osx" ]; then
      # https://github.com/travis-ci/travis-ci/issues/6307#issuecomment-233315824
      rvm get head
    fi

matrix:
  fast_finish: true
  include:
    # testing of PR format
    - env:
        - DESC="test Issue ref in PR description"
        - CMD="./.ci/travis/travis.sh pr-description"

    # unit tests (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests and deploy"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Xms1024m -Xmx2048m'"
        - DEPLOY="true"

    # checkstyle (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="checkstyle and sevntu-checkstyle"
        - CMD="mvn clean verify -DskipTests -DskipITs -Dpmd.skip=true -Dfindbugs.skip=true -Dcobertura.skip=true"

    # cobertura and codecov (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="cobertura and codecov"
        - CMD="./.ci/travis/travis.sh cobertura-check"
        - CMD_AFTER_SUCCESS="bash <(curl -s https://codecov.io/bash)"
    # findbugs, spotbugs and pmd (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="findbugs, spotbugs and pmd"
        - CMD="mvn clean compile pmd:check findbugs:check spotbugs:check"

    # Releasenotes generation - validaton
    - jdk: oraclejdk8
      env:
        - DESC="Releasenotes generation"
        - CMD="./.ci/travis/travis.sh releasenotes-gen"

    # NonDex (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="NonDex"
        - CMD="./.ci/travis/travis.sh nondex"

    # site (oraclejdk8 as 'site' success is required to be sure that on release time all will be ok, admins will use oracle8 version)
    # moved to https://codeship.com/projects/124310/configure_tests
    #- jdk: oraclejdk8
    #  env:
    #    - DESC="site"
    #    - CMD1="mvn clean site -Dlinkcheck.skip=true -DskipTests -DskipITs "
    #    - CMD2=" -Dpmd.skip=true -Dfindbugs.skip=true -Dcobertura.skip=true "
    #    - CMD3=" -Dcheckstyle.ant.skip=true -Dcheckstyle.skip=true"
    #    - CMD=$CMD1$CMD2$CMD3
    #    - COVERAGE_CMD=""

    # unit tests in German locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests de"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=de -Duser.country=DE -Xms1024m -Xmx2048m'"
    # unit tests in Spanish locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests es"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=es -Duser.country=ES -Xms1024m -Xmx2048m'"
    # unit tests in Finnish locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests fi"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=fi -Duser.country=FI -Xms1024m -Xmx2048m'"
    # unit tests in French locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests fr"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=fr -Duser.country=FR -Xms1024m -Xmx2048m'"
    # unit tests in Chinese locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests zh"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=zh -Duser.country=CN -Xms1024m -Xmx2048m'"
    # unit tests in Japanese locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests ja"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=ja -Duser.country=JP -Xms1024m -Xmx2048m'"
    # unit tests in Portuguese locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests pt"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=pt -Duser.country=PT -Xms1024m -Xmx2048m'"
    # unit tests in Turkish locale (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="tests tr"
        - CMD="mvn clean integration-test failsafe:verify -DargLine='-Duser.language=tr -Duser.country=TR -Xms1024m -Xmx2048m'"

    # assembly (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="assembly & run '-all' jar"
        - CMD="./.ci/travis/travis.sh assembly-run-all-jar"

    # NoExceptiontest - Guava with google_checks (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="NoExceptionTest - Guava with google_checks"
        - CMD="./.ci/travis/travis.sh no-exception-test-guava-with-google-checks"

    # release dry run (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="release dry run"
        - CMD="./.ci/travis/travis.sh release-dry-run"

    # Check the chmod on files.
    - env:
        - DESC="check permissions on all files"
        - CMD="./.ci/travis/travis.sh check-chmod"

    # Ensure that all Sevntu check are kused
    - jdk: oraclejdk8
      env:
        - DESC="All sevntu checks should be used"
        - CMD="./.ci/travis/travis.sh all-sevntu-checks"

    # MacOS verify (till cache is not working, we can not do verify)
    - os: osx
      env:
        - DESC="MacOS verify, site, assembly"
        - CMD="export JAVA_HOME=$(/usr/libexec/java_home) && mvn package -Dlinkcheck.skip=true && mvn package -Passembly "

    # https://sonarqube.com (oraclejdk8)
    - jdk: oraclejdk8
      env:
        - DESC="sonarqube.com"
        - CMD="./.ci/travis/travis.sh sonarqube"

    # No error testing - simple-binary-encoding
    - jdk: oraclejdk8
      env:
        - DESC="no error test on simple-binary-encoding"
        - CMD="./.ci/travis/travis.sh no-error-test-sbe"

script:
  - SKIP_FILES=".github|appveyor.yml|circle.yml|distelli-manifest.yml|fast-forward-merge.sh|LICENSE|LICENSE.apache20|README.md|release.sh|RIGHTS.antlr|shippable.yml|wercker.yml|intellij-idea-inspections.xml"
  - SKIP_CI=$(if [[ $(git diff --name-only HEAD HEAD~1 | grep -vE "$SKIP_FILES" | cat | wc -c | sed 's/^ *//' ) > 0 ]]; then echo false; else echo true; fi;)
  - echo "SKIP_CI="$SKIP_CI
  - |
    set -e
    if [[ $SKIP_CI == 'false' ]];
    then
         eval $CMD;
         echo "eval of CMD is completed"
    fi

after_success:
  - |
    set -e
    if [[ -n $CMD_AFTER_SUCCESS
          && $SKIP_CI == 'false'
       ]];
    then
        eval $CMD_AFTER_SUCCESS;
        echo "CMD_AFTER_SUCCESS is finished";
    fi
  - |
    set -e
    SKIP_DEPLOY=$(if [ $(git log -1 | grep -E "\[maven-release-plugin\] prepare release" | cat | wc -l) -lt 1 ]; then echo false; else echo true; fi;)
    if [[ $TRAVIS_REPO_SLUG == 'checkstyle/checkstyle'
            && $TRAVIS_BRANCH == 'master'
            && $TRAVIS_PULL_REQUEST == 'false'
            && $DEPLOY == 'true'
            && $SKIP_CI == 'false'
            && $SKIP_DEPLOY == 'false'
       ]];
    then
        mvn -s config/deploy-settings.xml -Pno-validations deploy;
        echo "deploy to maven snapshot repository is finished";
    fi
