git:
    depth: false
matrix:
    fast_finish: true
    include:
        - os: linux
          dist: xenial
          group: beta
          language: python
          sudo: false
          env: USE_BUNDLE=1 SW=$HOME/sw PKG_CONFIG_PATH=$SW/lib/pkgconfig LD_LIBRARY_PATH=$SW/lib PYTHON=$SW/bin/python3
          addons:
            apt:
              packages:
                - libgl1-mesa-dev
                - libxi-dev
                - libxrandr-dev
                - libxinerama-dev
                - libxcursor-dev
                - libxcb-xkb-dev
                - libdbus-1-dev

        - os: linux
          dist: xenial
          group: beta
          sudo: false
          env:
            - CC=gcc CFLAGS=-funsigned-char SANITIZE_ARG=--sanitize
          language: python
          python: "3.5"
          addons:
            apt:
              packages:
                - libgl1-mesa-dev
                - libfontconfig1-dev
                - libharfbuzz-dev
                - libxi-dev
                - libxrandr-dev
                - libxinerama-dev
                - libxcursor-dev
                - libxcb-xkb-dev
                - libpng-dev
                - libdbus-1-dev
                - python3-pil

        - os: linux
          dist: xenial
          group: beta
          sudo: false
          env:
            - CC=clang SANITIZE_ARG=--sanitize
          language: python
          python: "3.5"
          addons:
            apt:
              packages:
                - libgl1-mesa-dev
                - libfontconfig1-dev
                - libharfbuzz-dev
                - libxi-dev
                - libxrandr-dev
                - libxinerama-dev
                - libxcursor-dev
                - libxcb-xkb-dev
                - libpng-dev
                - libdbus-1-dev
                - python3-pil

        - os: linux
          dist: xenial
          group: beta
          sudo: false
          env:
            - RUN_FLAKE=1 BUILD_PKG=linux-package
          language: python
          python: "3.6"
          addons:
            apt:
              packages:
                - libgl1-mesa-dev
                - libfontconfig1-dev
                - libharfbuzz-dev
                - libxi-dev
                - libxrandr-dev
                - libxinerama-dev
                - libxcursor-dev
                - libxcb-xkb-dev
                - libpng-dev
                - libdbus-1-dev
                - python3-pil
                - clang
        - os: osx
          language: generic
          env: SWBASE=/Users/Shared/buildbot/sw SW=$SWBASE/sw PATH=$SW/bin:$PATH

        - os: osx
          language: generic
          addons:
            homebrew:
              update: true
              brewfile: true
          env: USE_BREW=1 BUILD_PKG=osx-bundle

env:
    global:
        - PYTHON=python3
        - PKG_CONFIG_PATH=$HOME/harfbuzz/lib/pkgconfig:$PKG_CONFIG_PATH
        - LD_LIBRARY_PATH=$HOME/harfbuzz/lib:$LD_LIBRARY_PATH
        - ASAN_OPTIONS=leak_check_at_exit=0

install: |
    set -e
    if [[ "$RUN_FLAKE" == "1" ]]; then pip install flake8; fi
    if [[ "$TRAVIS_OS_NAME" == 'osx' ]]; then
        if [[ "$USE_BREW" == "1" ]]; then
            logo/make.py
        else
            mkdir -p $SW;
            curl https://download.calibre-ebook.com/travis/kitty/osx.tar.xz | tar xJ -C $SW;
        fi
    else
        if [[ "$USE_BUNDLE" == "1" ]]; then
            mkdir -p $SW;
            curl https://download.calibre-ebook.com/travis/kitty/linux-64.tar.xz | tar xJ -C $SW;
            find $SW -type f -name '*.pc' -exec sed -i "s,/sw/sw,$SW,g" {} \;;
            find $SW -type f -name '_sysconfig*.py' -exec sed -i "s,/sw/sw,$SW,g" {} \;;
        else
            pushd /tmp
            wget --no-check-certificate http://xkbcommon.org/download/libxkbcommon-0.6.1.tar.xz
            tar xf libxkbcommon-0.6.1.tar.xz
            cd libxkbcommon-0.6.1
            ./configure --prefix=$HOME/harfbuzz --disable-dependency-tracking --disable-static
            make -j2
            make install
            wget https://github.com/behdad/harfbuzz/releases/download/1.6.3/harfbuzz-1.6.3.tar.bz2
            tar xf harfbuzz-1.6.3.tar.bz2
            cd harfbuzz-1.6.3
            ./configure --prefix=$HOME/harfbuzz --disable-dependency-tracking --disable-static --with-glib=no --with-gobject=no --with-cairo=no --with-fontconfig=no --with-icu=no --with-directwrite=no --with-freetype=yes
            make -j2
            make install
            cd ..
            popd
        fi
        if [[ "$BUILD_PKG" == "linux-package" ]]; then
            pip install sphinx
        fi
    fi
    pkg-config --cflags harfbuzz
    if [[ "$TRAVIS_OS_NAME" != 'osx' ]]; then
        PLIB=$(ldd `which python` | grep libpython | cut -d ' ' -f 3)
        export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:`dirname $PLIB`
    fi
    set +e

before_script:
    - echo LD_LIBRARY_PATH=$LD_LIBRARY_PATH PKG_CONFIG_PATH=$PKG_CONFIG_PATH
    - $PYTHON setup.py build --debug --verbose $SANITIZE_ARG;

script: |
    set -e

    if grep -Inr '\s$' kitty kitty_tests kittens docs *.py *.asciidoc *.rst .gitattributes .gitignore; then echo Trailing whitespace found, aborting.; exit 1; fi

    if [[ -z "$SANITIZE_ARG" ]]; then $PYTHON test.py; else ./asan-launcher test.py; fi

    if [[ "$RUN_FLAKE" == "1" ]]; then flake8 --count .; fi

    if [[ "$BUILD_PKG" == "linux-package" ]]; then make FAIL_WARN=-W man && make FAIL_WARN=-W html; fi

    if [[ ! -z "$BUILD_PKG" ]]; then $PYTHON setup.py $BUILD_PKG; fi

    set +e
