sudo: false
env:
  global:
    - TRAVIS_NODE_VERSION="8"
    - BUILD_DIR="/tmp/build-0"
    - BUNDLE_ID="cc.fovea.babygoo"
    - IAP_ID="babygooinapp1"
node_js: "8"
matrix:
  include:

    # -------------
    #  osx
    # -------------

    # base osx test
    - env: PLATFORM=osx CORDOVA=9.0.0 CORDOVA_OSX=5.0.0
      os: osx
      osx_image: xcode10.2
      language: objective-c
    # older cordova and cordova-osx versions
    - env: PLATFORM=osx CORDOVA=8.1.2 CORDOVA_OSX=4.0.2
      os: osx
      osx_image: xcode10.2
      language: objective-c
    # older xcode (9.4)
    # - env: PLATFORM=osx CORDOVA=9.0.0 CORDOVA_OSX=5.0.0
    #   os: osx
    #   osx_image: xcode9.4
    #   language: objective-c

    # -------------
    #  ios
    # -------------
    #  note: the cordova build doesn't run when using cordova-ios@4
    #        so we only test with cordova-ios@5

    # up-to-date tools
    - env: PLATFORM=ios-12.1 CORDOVA=9.0.0 CORDOVA_IOS=5.0.1
      os: osx
      osx_image: xcode10.2
      language: objective-c
    # cordova 8
    - env: PLATFORM=ios-12.1 CORDOVA=8.1.2 CORDOVA_IOS=5.0.1
      os: osx
      osx_image: xcode10.1
      language: objective-c
    # cordova 7
    - env: PLATFORM=ios-12.1 CORDOVA=7.1.0 CORDOVA_IOS=5.0.1
      os: osx
      osx_image: xcode10.0
      language: objective-c
    # xcode 9
    - env: PLATFORM=ios-12.1 CORDOVA=9.0.0 CORDOVA_IOS=5.0.1
      os: osx
      osx_image: xcode9.4
      language: objective-c
    # - env: PLATFORM=ios-12.1 CORDOVA=9.0.0 CORDOVA_IOS=4.5.5
    #   os: osx
    #   osx_image: xcode10
    #   language: objective-c
    # - env: PLATFORM=ios-12.1 CORDOVA=9.0.0 CORDOVA_IOS=4.5.5
    #   os: osx
    #   osx_image: xcode10
    #   language: objective-c
    # - env: PLATFORM=ios-11.0 CORDOVA=9.0.0 CORDOVA_IOS=5.0.1
    #   os: osx
    #   osx_image: xcode10
    #   language: objective-c
    # - env: PLATFORM=ios-11.0 CORDOVA=8.1.2 CORDOVA_IOS=4.5.5
    #   os: osx
    #   osx_image: xcode10
    #   language: objective-c
    # - env: PLATFORM=ios-11.0 CORDOVA=7.1.0 CORDOVA_IOS=4.5.5
    #   os: osx
    #   osx_image: xcode10
    #   language: objective-c

    # -------------
    #  android
    # -------------

    #
    # android-4.4
    #

    # cordova-android@7.1.2
    - env: PLATFORM=android-4.4 CORDOVA=9.0.0 CORDOVA_ANDROID=8.0.0
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@7.1.4
    - env: PLATFORM=android-4.4 CORDOVA=8.1.2 CORDOVA_ANDROID=7.1.4
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@6.4.0
    # - env: PLATFORM=android-4.4 CORDOVA=7.1.0 CORDOVA_ANDROID=6.4.0
    #   os: linux
    #   jdk: openjdk8
    #   language: android
    #   android:
    #     components:
    #       - tools
    #       - extra-android-m2repository

    #
    # android-5.1
    #

    # cordova-android@8.0.0
    - env: PLATFORM=android-5.1 CORDOVA=9.0.0 CORDOVA_ANDROID=8.0.0
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@7.1.4
    - env: PLATFORM=android-5.1 CORDOVA=8.1.2 CORDOVA_ANDROID=7.1.4
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@7.1.3
    - env: PLATFORM=android-5.1 CORDOVA=7.1.0 CORDOVA_ANDROID=7.1.3
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # broken versions, see: https://github.com/j3k0/cordova-plugin-purchase/issues/762
    # cordova-android@7.1.2 (broken)
    - env: PLATFORM=android-5.1 CORDOVA=7.1.0 CORDOVA_ANDROID=7.1.2
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository
    #
    # cordova-android@7.1.1 (broken)
    - env: PLATFORM=android-5.1 CORDOVA=7.1.0 CORDOVA_ANDROID=7.1.1
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@6.4.0
    # - env: PLATFORM=android-5.1 CORDOVA=7.1.0 CORDOVA_ANDROID=6.4.0
    #   os: linux
    #   jdk: openjdk8
    #   language: android
    #   android:
    #     components:
    #       - tools
    #       - extra-android-m2repository

    #
    # android-6.0
    #

    # cordova-android@8.0.0
    - env: PLATFORM=android-6.0 CORDOVA=9.0.0 CORDOVA_ANDROID=8.0.0
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@7.1.4
    - env: PLATFORM=android-6.0 CORDOVA=8.1.2 CORDOVA_ANDROID=7.1.4
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@6.4.0
    # - env: PLATFORM=android-6.0 CORDOVA=7.1.0 CORDOVA_ANDROID=6.4.0
    #   os: linux
    #   jdk: openjdk8
    #   language: android
    #   android:
    #     components:
    #       - tools
    #       - extra-android-m2repository

    #
    # android-7.0
    #

    # cordova-android@8.0.0
    - env: PLATFORM=android-7.0 CORDOVA=9.0.0 CORDOVA_ANDROID=8.0.0
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@7.1.4
    - env: PLATFORM=android-7.0 CORDOVA=8.1.2 CORDOVA_ANDROID=7.1.4
      os: linux
      jdk: openjdk8
      language: android
      android:
        components:
          - tools
          - extra-android-m2repository

    # cordova-android@6.4.0
    # - env: PLATFORM=android-7.0 CORDOVA=7.1.0 CORDOVA_ANDROID=6.4.0
    #   os: linux
    #   jdk: openjdk8
    #   language: android
    #   android:
    #     components:
    #       - tools
    #       - extra-android-m2repository

before_install:
- rm -rf ~/.nvm && git clone https://github.com/creationix/nvm.git ~/.nvm && (cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`) && source ~/.nvm/nvm.sh && nvm install $TRAVIS_NODE_VERSION
- node --version
- if [[ "$PLATFORM" =~ ios ]]; then npm install -g ios-deploy > /dev/null; fi
- if [[ "$PLATFORM" =~ android ]]; then
    gradle --version;
    mkdir -p "$ANDROID_HOME/licenses" || true;
    echo -e "\n24333f8a63b6825ea9c5514f83c2829b004d1fee" >> "$ANDROID_HOME/licenses/android-sdk-license";
    echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" >> "$ANDROID_HOME/licenses/android-sdk-license";
    echo -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "$ANDROID_HOME/licenses/android-sdk-license";
    echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" >> "$ANDROID_HOME/licenses/android-sdk-preview-license";
    yes | sdkmanager --update;
    # yes | sdkmanager --licenses;
  fi
- npm install -g "cordova@$CORDOVA" > /dev/null

install:
- npm install > /dev/null

script:
  - export ROOT_DIR="$(pwd)"
  - make all
  - rm -fr "$BUILD_DIR"
  - cd test && cordova create "$BUILD_DIR" "$BUNDLE_ID" Test
  - cp src/css/* "$BUILD_DIR/www/css/"
  - cp src/js/* "$BUILD_DIR/www/js/"
  - cp src/index.html "$BUILD_DIR/www/"
  - cd "$BUILD_DIR"
  - sed --in-place=.bak "s/babygooinapp1/$IAP_ID/g" "www/js/iap.js" || sed -i bak "s/babygooinapp1/$IAP_ID/g" "$BUILD_DIR/www/js/iap.js"
  - if [[ "$PLATFORM" =~ ios ]]; then cordova platform add ios@$CORDOVA_IOS; fi
  - if [[ "$PLATFORM" =~ osx ]]; then cordova platform add osx@$CORDOVA_OSX; fi
  - if [[ "$PLATFORM" =~ android ]]; then cordova platform add android@$CORDOVA_ANDROID; fi
  - cordova plugin add "$ROOT_DIR"
  - rsync -r "$ROOT_DIR"/src/android/ plugins/cordova-plugin-purchase/src/android
  - cp "$ROOT_DIR"/src/ios/*.[hm] plugins/cordova-plugin-purchase/src/ios/
  - cp "$ROOT_DIR"/www/*.js plugins/cordova-plugin-purchase/www/
  - cordova plugin add https://github.com/apache/cordova-plugin-console.git
  - cordova build --debug 2>&1
  - if [[ "$PLATFORM" =~ ios ]]; then test -e platforms/ios/build/emulator/Test.app; fi
  - if [[ "$PLATFORM" =~ osx ]]; then test -e platforms/osx/build/Test.app; fi
  - if [[ "$PLATFORM" =~ android ]]; then
      test -e platforms/android/app/build/outputs/apk/debug/app-debug.apk || test -e platforms/android/build/outputs/apk/debug/android-debug.apk;
    fi

