# Only build tags (Doesn't work - doesn't build anything)
if: tag IS present OR type = pull_request

rvm: 2.3.3

# It's important to only build production branches otherwise Electron Builder
# might take assets from dev branches and overwrite those of production.
# https://docs.travis-ci.com/user/customizing-the-build/#Building-Specific-Branches
branches:
  only:
    - master
    - /^v\d+\.\d+(\.\d+)?(-\S*)?$/

matrix:
  include:
    - os: osx
      osx_image: xcode9.0
      language: node_js
      node_js: "8"
      env:
        - ELECTRON_CACHE=$HOME/.cache/electron
        - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder

    - os: linux
      sudo: required
      dist: trusty
      language: node_js
      node_js: "8"
      env:
        - ELECTRON_CACHE=$HOME/.cache/electron
        - ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder

# cache:
#   directories:
#   - node_modules
#   - $HOME/.cache/electron
#   - $HOME/.cache/electron-builder
 
before_install:
  # HOMEBREW_NO_AUTO_UPDATE needed so that Homebrew doesn't upgrade to the next
  # version, which requires Ruby 2.3, which is not available on the Travis VM.

  # Silence apt-get update errors (for example when a module doesn't exist) since
  # otherwise it will make the whole build fails, even though all we need is yarn.
  - |
    if [ "$TRAVIS_OS_NAME" == "osx" ]; then
      HOMEBREW_NO_AUTO_UPDATE=1 brew install yarn
    else
      curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
      echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
      sudo apt-get update || true
      sudo apt-get install -y yarn
    fi

script:
  - |
    # Install tools
    npm install
    cd Tools
    npm install
    cd ..

    # Run test units
    cd CliClient
    npm install
    ./run_test.sh
    testResult=$?
    if [ $testResult -ne 0 ]; then
      exit $testResult
    fi
    cd ..

    # Run linter for pull requests only - this is so that
    # bypassing eslint is allowed for urgent fixes.
    if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
      npm run linter-ci ./
      testResult=$?
      if [ $testResult -ne 0 ]; then
        exit $testResult
      fi
    fi

    # Find out if we should run the build or not. Electron-builder gets stuck when
    # builing PRs so we disable it in this case. The Linux build should provide
    # enough info if the app builds or not.
    # https://github.com/electron-userland/electron-builder/issues/4263
    if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
      if [ "$TRAVIS_OS_NAME" == "osx" ]; then
        exit 0
      fi
    fi

    # Prepare the Electron app and build it
    cd ElectronClient/app
    rsync -aP --delete ../../ReactNativeClient/lib/ lib/
    npm install && USE_HARD_LINKS=false yarn dist