matrix:
  include:
    - &linux
      os: linux
      sudo: false
      language: android
      jdk: oraclejdk8
      android:
        components:
          - tools
          - platform-tools
          - android-22
          - build-tools-25.0.2
      env:
        - NODE_VERS=8
        - CORDOVA_VERS=5
        - PLATFORM=android
        - PLATFORM_VERS=5.1
        - PACKAGE_EXT=apk
        - CACHE_NAME=a5c5
    - &macosx
      os: osx
      language: objective-c
      osx_image: xcode8.3
      env:
        - NODE_VERS=8
        - CORDOVA_VERS=5
        - PLATFORM=ios
        - PLATFORM_VERS=10.3
        - PACKAGE_EXT=zip
        - CACHE_NAME=i10c5
    - <<: *linux
      android:
        components:
          - tools
          - platform-tools
          - android-25
          - build-tools-25.0.2
      env: 
        - NODE_VERS=8
        - CORDOVA_VERS=6
        - PLATFORM=android
        - PLATFORM_VERS=6.0
        - PACKAGE_EXT=apk
        - CACHE_NAME=a6c6
    - <<: *macosx
      osx_image: xcode9.4
      env:
        - NODE_VERS=8
        - CORDOVA_VERS=6
        - PLATFORM=ios
        - PLATFORM_VERS=10.3
        - PACKAGE_EXT=zip
        - CACHE_NAME=i10c6
    - <<: *linux
      android:
        components:
          - tools
          - platform-tools
          - android-26
          - build-tools-26.0.2
      env: 
        - NODE_VERS=10
        - CORDOVA_VERS=7
        - PLATFORM=android
        - PLATFORM_VERS=7.1
        - PACKAGE_EXT=apk
        - CACHE_NAME=a7c7
    - <<: *macosx
      osx_image: xcode9.4
      env:
        - NODE_VERS=10
        - CORDOVA_VERS=7
        - PLATFORM=ios
        - PLATFORM_VERS=11.3
        - PACKAGE_EXT=zip
        - CACHE_NAME=i11c7
    - <<: *linux
      android:
        components:
          - tools
          - platform-tools
          - android-27
          - build-tools-27.0.3
      env: 
        - NODE_VERS=10
        - CORDOVA_VERS=8
        - PLATFORM=android
        - PLATFORM_VERS=8.1
        - PACKAGE_EXT=apk
        - CACHE_NAME=a8c8
    - <<: *macosx
      osx_image: xcode9.4
      env:
        - NODE_VERS=10
        - CORDOVA_VERS=8
        - PLATFORM=ios
        - PLATFORM_VERS=12.2
        - PACKAGE_EXT=zip
        - CACHE_NAME=i12c8
    - <<: *linux
      android:
        components:
          - tools
          - platform-tools
          - android-28
          - build-tools-28.0.3
      env: 
        - NODE_VERS=12
        - CORDOVA_VERS=9
        - PLATFORM=android
        - PLATFORM_VERS=9.0
        - PACKAGE_EXT=apk
        - CACHE_NAME=a9c9
    - <<: *macosx
      osx_image: xcode9.4
      env:
        - NODE_VERS=12
        - CORDOVA_VERS=9
        - PLATFORM=ios
        - PLATFORM_VERS=12.2
        - PACKAGE_EXT=zip
        - CACHE_NAME=i12c9
  exclude:
    - env: PLATFORM=none

env:
  global:
    - ANTITAMPERING_TEST_DIR=$HOME/tests/hello
    - IOS_BUILD_DIR=$ANTITAMPERING_TEST_DIR/platforms/ios/build/emulator
    - SAUCE_CREDENTIALS=$SAUCE_USERNAME:$SAUCE_ACCESS_KEY
    - SAUCE_HEADERS=Content-Type:application/octet-stream
    - SAUCE_BASE_URL=https://saucelabs.com/rest/v1/storage/duddu/$TRAVIS_JOB_ID
  matrix:
    - PLATFORM=none

branches:
  except:
    - /^\d+\.\d+(\.\d+)?(-\S*)?$/

addons:
  sauce_connect: true

cache:
  directories:
    - $HOME/.m2
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
    - $HOME/.android/build-cache
    - node_modules

before_cache:
  - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -f $HOME/.gradle/caches/*/jarSnapshots/jarSnapshots.bin
  - rm -f $HOME/.gradle/caches/*/jarSnapshots/jarSnapshots.lock
  - rm -f $HOME/.gradle/caches/*/jarSnapshots/cache.properties*
  - rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.bin
  - rm -f $HOME/.gradle/caches/*/fileHashes/fileHashes.lock
  - rm -f $HOME/.gradle/caches/*/classAnalysis/classAnalysis.bin
  - rm -f $HOME/.gradle/caches/*/classAnalysis/classAnalysis.lock
  - rm -f $HOME/.gradle/caches/*/classAnalysis/cache.properties*
  - rm -rf $HOME/.gradle/caches/*/plugin-resolution/

before_install:
  - nvm install $NODE_VERS

install:
  - npm install -g npm@latest
  - npm install -g cordova@$CORDOVA_VERS
  - npm install

before_script:
  - npm run lint

script:
  - mkdir -p $ANTITAMPERING_TEST_DIR
  - cordova create $ANTITAMPERING_TEST_DIR com.example.hello HelloWorld
  - cd $ANTITAMPERING_TEST_DIR
  - cordova platform add $PLATFORM --save
  - cordova plugin add $TRAVIS_BUILD_DIR --variable ENABLE_CORDOVA_CALLBACK=true --save
  - cordova plugin list
  - cordova prepare -verbose
  - cordova compile --debug $PLATFORM -verbose
  - cd $TRAVIS_BUILD_DIR
  - npm run tamper-$PLATFORM
  - curl -u $SAUCE_CREDENTIALS -X POST -H $SAUCE_HEADERS
      $SAUCE_BASE_URL-$PLATFORM.$PACKAGE_EXT?overwrite=true
      --data-binary @$TRAVIS_BUILD_DIR/tests/$PLATFORM.$PACKAGE_EXT
  - curl -u $SAUCE_CREDENTIALS -X POST -H $SAUCE_HEADERS
      $SAUCE_BASE_URL-$PLATFORM-tamper.$PACKAGE_EXT?overwrite=true
      --data-binary @$TRAVIS_BUILD_DIR/tests/$PLATFORM-tampered.$PACKAGE_EXT
  - npm run appium-$PLATFORM
