language: c
sudo: false

cache:
  apt: true
  directories:
  - $HOME/.stack
  - $HOME/.ghc-mod

addons:
  apt:
    packages:
      - libfcgi-dev
      - libgmp-dev

before_install:
  - unset CC
  - mkdir -p ~/.local/bin
  - export PATH=$HOME/.local/bin:$PATH
  - travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
  - stack --version

install:
  # - git clone --depth=1 https://github.com/DanielG/cabal-helper.git
  - stack --no-terminal setup --resolver=ghc-$GHCVER
  - stack --no-terminal install cabal-install --resolver=$RES
  - travis_retry cabal update
  - stack --no-terminal install happy --resolver=$RES
  - |
    resf="ghc-$GHCVER.yaml"
    echo "resolver: ghc-$GHCVER" > "$resf"
    echo "packages: ['.']" >> "$resf"
    stack --no-terminal solver --update-config --stack-yaml="$resf" || exit 101
    sed -i 's/^resolver:/compiler:/;s/^extra-deps:/packages:/' "$resf"
    echo "resolver: { name: 'ghc-$GHCVER', location: './$resf' }" > stack.yaml
    echo "packages: ['.']" >> stack.yaml
    ir=$( stack path --snapshot-install-root )
    ls -d ${ir%/custom-ghc-*}/custom-ghc-* | grep -v "${ir%/*}" | while read i; do
      rm -rfv "$i"
    done


script:
  - cabal check
  - |
    case "$TRAVIS_BRANCH" in
    "release"*)
      touch ChangeLog
      sdistdir="$TRAVIS_BUILD_DIR/../sdist-test"
      mkdir -p "$sdistdir"
      tar zvxf $(stack sdist 2>&1 | tail -n1 | sed 's/.* //') --strip-components=1 -C "$sdistdir"
      cp "ghc-$GHCVER.yaml" stack.yaml "$sdistdir"
      cd "$sdistdir"
      ;;
    esac
  - stack --no-terminal build --test --no-run-tests
  - export DOCTEST_DIST_DIR="$(stack path --dist-dir)"
  - stack --no-terminal test

matrix:
  matrix:
  include:
  - env: GHCVER=7.8.4 RES=lts-2.22
    compiler: ': #GHC 7.8.4'
  - env: GHCVER=7.10.3 RES=lts-6.9
    compiler: ': #GHC 7.10.3'
  - env: GHCVER=8.0.1 RES=nightly-2016-08-01
    compiler: ': #GHC 8.0.1'