---

language: cpp
sudo: required
dist: trusty

services:
  - docker

notifications:
  email: false

matrix:
  include:
    - os: osx
      # osx_image: xcode9 # don't specify an image here to use the default
      compiler: clang
    - os: linux
      compiler: gcc
      env:
        - CXX_VERSION=g++-8
        - CC_VERSION=gcc-8
        - CMAKE_GENERATOR=Ninja
    - os: linux
      compiler: clang
      env:
        - CXX_VERSION=clang++-6.0
        - CC_VERSION=clang-6.0
        - CMAKE_GENERATOR=Ninja
        - COVERAGE=ON

install:
  - |
    if [ "$TRAVIS_OS_NAME" = "linux" ]; then 
        docker build -t nheko-reborn/mtxclient -f Dockerfile .
    fi

  - ./.ci/install.sh

script:
  - $CXX --version
  - cmake --version

  # Start the synapse server to run the tests.
  - if [ $TRAVIS_OS_NAME == linux ]; then make synapse; fi

  # Build the lib and run the test suite against synapse.
  - |
    if [ $TRAVIS_OS_NAME == linux ]; then
      docker run -v `pwd`:/build --net=host \
        -e CXX_VERSION=${CXX_VERSION} \
        -e CC_VERSION=${CC_VERSION} \
        -e COVERAGE=${COVERAGE} \
        -e TRAVIS_OS_NAME=${TRAVIS_OS_NAME} \
        nheko-reborn/mtxclient \
        /bin/bash -c "./.ci/script.sh"
    fi

  # Build the lib and run the linter.
  - |
    if [ $TRAVIS_OS_NAME == osx ]; then
      ./.ci/script.sh
    fi

after_success:
  # Generate coverage report and upload report to CodeCov.
  - |
    if [ $COVERAGE == ON ]; then
      docker run -v `pwd`:/build \
        --net=host nheko-reborn/mtxclient \
        /bin/bash -c "make -C build -j1 test_coverage && ./.ci/coverage.sh" && \
      bash <(curl -s https://codecov.io/bash) -f "!*tests*" || echo "Codecov failed"
    fi
