os: linux
dist: bionic
group: edge
language: node_js
node_js: 11
php: 7.1

android:
    components:
    - tools
    - platform-tools
    - build-tools-29.0.3
    - android-28
    - extra-google-google_play_services
    - extra-google-m2repository
    - extra-android-m2repository

git:
  depth: 3

before_cache:
  - rm -rf $HOME/.cache/electron-builder/wine
  - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock
  - rm -fr $HOME/.gradle/caches/*/plugin-resolution/

cache:
  directories:
    - $HOME/.npm
    - $HOME/.cache/electron
    - $HOME/.cache/electron-builder
    - $HOME/.gradle/caches/
    - $HOME/.gradle/wrapper/
    - $HOME/.android/build-cache

before_script:
  - if [ "$TRAVIS_OS_NAME" != 'windows' ] ; then  npm install npm@latest -g ; fi
  - gulp

jobs:
  include:
  - stage: check
    if: NOT branch =~ /(master|integration|desktop)$/ AND env(DEPLOY) IS blank
    os: linux
    script: npm run build --bailOnLintError true --typeCheckOnLint true
  - stage: mirror
    if: branch IN (master, integration, desktop) AND repo = moodlehq/moodleapp
    os: linux
    script: scripts/mirror.sh
  - stage: prepare
    if: branch =~ /(master|^integration)$/ AND env(PREPARE) IS NOT blank AND env(PREPARE) = 1
    os: linux
    script: scripts/aot.sh
  - stage: build
    name: "Build Android"
    if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND NOT branch = desktop) OR (env(DEPLOY) IN (2,3) AND tag IS NOT blank))
    os: linux
    dist: trusty
    group: edge
    language: android
    env:
    - BUILD_PLATFORM='android'
    before_install:
    - nvm install 11
    - node --version
    - npm --version
    - nvm --version
    - npm ci
    - npm install -g gulp
    script: scripts/aot.sh
  - stage: build
    name: "Build iOS"
    if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND NOT branch = desktop) OR (env(DEPLOY) IN (2,3) AND tag IS NOT blank))
    os: osx
    osx_image: xcode11.3
    env:
    - BUILD_PLATFORM='ios'
    script: scripts/aot.sh
  - stage: build
    name: "Build Linux"
    if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
    os: linux
    env:
    - ELECTRON_CACHE=$HOME/.cache/electron
    - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
    - BUILD_PLATFORM='linux'
    script: scripts/aot.sh
  - stage: build
    name: "Build MacOS"
    if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
    os: osx
    osx_image: xcode11.3
    env:
    - ELECTRON_CACHE=$HOME/.cache/electron
    - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
    - BUILD_PLATFORM='osx'
    script: scripts/aot.sh
  - stage: build
    name: "Build Windows"
    if: env(DEPLOY) IS NOT blank AND ((env(DEPLOY) = 1 AND branch = desktop) OR (env(DEPLOY) = 3 AND tag IS NOT blank))
    os: windows
    env:
    - ELECTRON_CACHE=$HOME/.cache/electron
    - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
    - ELECTRON_BUILDER_ALLOW_UNRESOLVED_DEPENDENCIES=true
    - DEBUG=electron-windows-store
    - BUILD_PLATFORM='windows'
    script: scripts/aot.sh