language: generic
dist: trusty
sudo: required
addons:
  apt:
    packages:
      - cabal-install
      - ghc
      - zsh
    #  - ksh
    #  - gcc-4.8
    #  - g++-4.8

cache:
  directories:
    - $HOME/.npm
    - $HOME/.ghc
    - $HOME/.cabal
    - $TRAVIS_BUILD_DIR/.cache
    - $TRAVIS_BUILD_DIR/node_modules
before_install:
  - $SHELL --version 2> /dev/null || dpkg -s $SHELL 2> /dev/null || which $SHELL
  - curl --version
  - wget --version
install:
  - if [ -n "${SHELLCHECK-}" ]; then cabal update && cabal install ShellCheck && shellcheck --version ; fi
  - if [ -z "${SHELLCHECK-}" ]; then nvm install node && npm install && npm prune && npm ls urchin doctoc; fi
  - '[ -z "$WITHOUT_CURL" ] || sudo apt-get remove curl -y'
script:
  - if [ -n "${MAKE_RELEASE-}" ]; then export GIT_EDITOR="sed -i '1 s/^/99.99.99 make release test/'" && git fetch --unshallow --tags && echo proceed | make TAG=99.99.99 release ; fi
  - if [ -n "${DOCTOCCHECK-}" ]; then cp README.markdown README.markdown.orig && npm run doctoc && diff -q README.markdown README.markdown.orig ; fi
  - if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash nvm.sh && shellcheck -s sh nvm.sh && shellcheck -s dash nvm.sh && shellcheck -s ksh nvm.sh ; fi
  - if [ -n "${SHELLCHECK-}" ]; then shellcheck -s bash install.sh bash_completion nvm-exec ; fi
  - if [ -n "${SHELL-}" ] && [ -n "${TEST_SUITE}" ]; then make TEST_SUITE=$TEST_SUITE URCHIN="$(npm bin)/urchin" test-$SHELL ; fi
after_success:
  - if [ -n "$WITHOUT_CURL" ]; then sudo apt-get install curl -y ; fi
env:
  global:
    - CXX=g++-4.8
    - CC=gcc-4.8
    - PATH="~/.cabal/bin/:$(echo $PATH | sed 's/::/:/')"
    - NVM_DIR="${TRAVIS_BUILD_DIR}"
  matrix:
    - MAKE_RELEASE=true
    - DOCTOCCHECK=true
    - SHELLCHECK=true
    - SHELL=bash TEST_SUITE=install_script
    - SHELL=sh TEST_SUITE=fast
    - SHELL=dash TEST_SUITE=fast
    - SHELL=bash TEST_SUITE=fast
    - SHELL=zsh TEST_SUITE=fast
  #  - SHELL=ksh TEST_SUITE=fast
    - SHELL=sh TEST_SUITE=sourcing
    - SHELL=dash TEST_SUITE=sourcing
    - SHELL=bash TEST_SUITE=sourcing
    - SHELL=zsh TEST_SUITE=sourcing
  #  - SHELL=ksh TEST_SUITE=sourcing
    - SHELL=sh TEST_SUITE=slow
    - SHELL=dash TEST_SUITE=slow
    - SHELL=bash TEST_SUITE=slow
    - SHELL=zsh TEST_SUITE=slow
  #  - SHELL=ksh TEST_SUITE=slow
    - SHELL=sh TEST_SUITE=installation_node
    - SHELL=sh TEST_SUITE=installation_node WITHOUT_CURL=1
    - SHELL=dash TEST_SUITE=installation_node
    - SHELL=dash TEST_SUITE=installation_node WITHOUT_CURL=1
    - SHELL=bash TEST_SUITE=installation_node
    - SHELL=bash TEST_SUITE=installation_node WITHOUT_CURL=1
    - SHELL=zsh TEST_SUITE=installation_node
    - SHELL=zsh TEST_SUITE=installation_node WITHOUT_CURL=1
  #  - SHELL=ksh TEST_SUITE=installation_node
  #  - SHELL=ksh TEST_SUITE=installation_node WITHOUT_CURL=1
    - SHELL=sh TEST_SUITE=installation_iojs
    - SHELL=sh TEST_SUITE=installation_iojs WITHOUT_CURL=1
    - SHELL=dash TEST_SUITE=installation_iojs
    - SHELL=dash TEST_SUITE=installation_iojs WITHOUT_CURL=1
    - SHELL=bash TEST_SUITE=installation_iojs
    - SHELL=bash TEST_SUITE=installation_iojs WITHOUT_CURL=1
    - SHELL=zsh TEST_SUITE=installation_iojs
    - SHELL=zsh TEST_SUITE=installation_iojs WITHOUT_CURL=1
  #  - SHELL=ksh TEST_SUITE=installation_iojs
  #  - SHELL=ksh TEST_SUITE=installation_iojs WITHOUT_CURL=1