# This Travis configuration file is built after a Cordova Paramedic
# specific template with minimal modifications and adaptations:
# https://github.com/apache/cordova-paramedic/blob/master/.travis.yml

sudo: false

addons:
  jwt:
    # SAUCE_ACCESS_KEY
    secure: rjC2avwYWiw+oTHleXcJPlehTA2j0jRZj+UJHq7fRCJRYIsraKy2j9q3fOSjWR7MEvf+/hUwhmf4gFk2zrDukbc0x3rMdt47BwNtbpCTN05KbHebl5AH0xx0ZPkJ5N0tJqG2t4Bl9wqNRINOMES77Souduh4udQdtGfA9IBmhb0FPNHmW0J++essbNjd5b5MgitqgTi30x7Tvf9QYMmsTKpN8pdfbE29dgqiY/HTKbxyOU+X2Ed5mcMi/bGhSGU78JU3u91S0VA+w+bmNZIU4VeXEFbDkjIboPR41aIbsfHrk/41+k6BAcOurKJ1TxBNEVxL8ouZfAuPDWhJVABxdbtYAiem309nuUJ0fR05qtX9AO1mmMh+0xByyme2xjSjTvt6bzZLNm2EdS6dO5FmG8aBVX4JJCHkTM5wrA5MgRFbEcgfv5jp3ynvY7dNasfaOLFa+IxZ5qzPdzkXnTEwvwe7ioo5phMGbpefFrimDl/vy1QJdTTCUcvaXkqumQdJwaySYDq3Nsns10yDPEATI1NtZGHLbUM+W+ZOaoTZRKwRelLHF5oyOQnyIu2HzBfJS7pHlIbQaxtigWHuSWuee+sfmTPjj40y4uUqQAEDxmawKb6Y6xqQr+QpvI9pvpzeZYHdApNBe6mPDVh4hwgjlFhE3/iusnU+aeZHIUJEmME=

env:
  global:
    - SAUCE_USERNAME=snay
    - TRAVIS_NODE_VERSION=12

language: node_js
node_js: 12

# yaml anchor/alias: https://medium.com/@tommyvn/travis-yml-dry-with-anchors-8b6a3ac1b027

_ios: &_ios
  os: osx
  osx_image: xcode10.3

matrix:
  include:
    # additional `npm test` in directory
    - env: ADDITIONAL_TESTS_DIR=./tests/ios
      <<: *_ios

    # many tests with saucelabs
    - env: PLATFORM=ios-11.3
      <<: *_ios
    - env: PLATFORM=ios-12.0
      <<: *_ios
    - env: PLATFORM=ios-12.2
      <<: *_ios

before_install:
  # manually install Node for `language: android`
  - if [[ "$PLATFORM" =~ android ]]; then nvm install $TRAVIS_NODE_VERSION; fi
  - node --version
  - if [[ "$PLATFORM" =~ android ]]; then gradle --version; fi
  - if [[ "$PLATFORM" =~ ios ]]; then npm install -g ios-deploy; fi
  - npm install -g cordova
  # install paramedic if not running on paramedic repo
  - if ! [[ "$TRAVIS_REPO_SLUG" =~ cordova-paramedic ]]; then npm install -g github:apache/cordova-paramedic; fi

install:
  - npm install

before_script:
  - |
    if [[ "$TRAVIS_REPO_SLUG" =~ cordova-paramedic ]]; then 
      # when used in the cordova-paramedic repo
      TEST_COMMAND="npm run eslint"
      PARAMEDIC_PLUGIN_TO_TEST="./spec/testable-plugin/"
      PARAMEDIC_COMMAND="node main.js"
    else 
      # when used in any other (plugin) repo
      TEST_COMMAND="npm test"
      PARAMEDIC_PLUGIN_TO_TEST=$(pwd)
      PARAMEDIC_COMMAND="cordova-paramedic"
    fi
  - PARAMEDIC_BUILDNAME=travis-$TRAVIS_REPO_SLUG-$TRAVIS_JOB_NUMBER
  - |
    echo "Variables now are set to:"
    echo "TEST_COMMAND=$TEST_COMMAND"
    echo "ADDITIONAL_TESTS=$ADDITIONAL_TESTS"
    echo "PARAMEDIC_COMMAND=$PARAMEDIC_COMMAND"
    echo "PLATFORM=$PLATFORM"
    echo "PARAMEDIC_PLUGIN_TO_TEST=$PARAMEDIC_PLUGIN_TO_TEST"
    echo "PARAMEDIC_BUILDNAME=$PARAMEDIC_BUILDNAME"
script:
  - $TEST_COMMAND
  - |
    if [[ "$ADDITIONAL_TESTS_DIR" != "" ]]; then
      cd $ADDITIONAL_TESTS_DIR && npm install && npm test;
    else
      $PARAMEDIC_COMMAND --config ./pr/$PLATFORM --plugin $PARAMEDIC_PLUGIN_TO_TEST --buildName $PARAMEDIC_BUILDNAME;
    fi
