language: python
sudo: false
fast_finish: true
python:
  - 2.7
  - 3.4
  - 3.5
env:
  global:
    # 1. Generated a token for travis at https://anaconda.org/quantopian/settings/access with scope api:write.
    #   Can also be done via anaconda CLI with
    #     $ TOKEN=$(anaconda auth --create --name my_travis_token)
    # 2. Generated secure env var below with travis gem via
    #     $ travis encrypt ANACONDA_TOKEN=$TOKEN
    #   See https://github.com/travis-ci/travis.rb#installation.
    #   If authenticating travis gem with github, a github token with the following scopes
    #   is sufficient: ["read:org", "user:email", "repo_deployment", "repo:status", "write:repo_hook"]
    #   See https://docs.travis-ci.com/api#external-apis.
    - secure: "W2tTHoZYLuEjoIMI/K3adv7QW7yx4iVOIkVOn73jUkv3IlyZZ+BraL0hBw5Dh/iBA9PnO1qOKeRFLDDfDza/1S+2QxZMBmJ8HAkcZehbtTPdCgn/+CYSlauUlJ2izxgnXFw49qJDllQWtwsK2PEuvHrir6wbdElkXKvIJoD7jQ4="
    - CONDA_ROOT_PYTHON_VERSION: "2.7"
  matrix:
    - NUMPY_VERSION=1.11.1 SCIPY_VERSION=0.17.1
cache:
  directories:
    - $HOME/.cache/.pip/

before_install:
  - if [ ${CONDA_ROOT_PYTHON_VERSION:0:1} == "2" ]; then wget https://repo.continuum.io/miniconda/Miniconda-3.7.0-Linux-x86_64.sh -O miniconda.sh; else wget https://repo.continuum.io/miniconda/Miniconda3-3.7.0-Linux-x86_64.sh -O miniconda.sh; fi
  - chmod +x miniconda.sh
  - ./miniconda.sh -b -p $HOME/miniconda
  - export PATH="$HOME/miniconda/bin:$PATH"
install:
  - conda info -a
  - conda install conda=4.1.11 conda-build=1.21.11 anaconda-client=1.5.1 --yes

  - TALIB_VERSION=$(cat ./etc/requirements_talib.txt | sed "s/TA-Lib==\(.*\)/\1/")
  - IFS='.' read -r -a NPY_VERSION_ARR <<< "$NUMPY_VERSION"
  - CONDA_NPY=${NPY_VERSION_ARR[0]}${NPY_VERSION_ARR[1]}
  - CONDA_PY=$TRAVIS_PYTHON_VERSION

  - if [[ "$TRAVIS_SECURE_ENV_VARS" = "true" && "$TRAVIS_BRANCH" = "master" && "$TRAVIS_PULL_REQUEST" = "false" ]]; then DO_UPLOAD="true"; else DO_UPLOAD="false"; fi
  - |
    for recipe in $(ls -d conda/*/ | xargs -I {} basename {}); do
      if [[ "$recipe" = "catalyst" ]]; then continue; fi

      conda build conda/$recipe --python=$CONDA_PY --numpy=$CONDA_NPY --skip-existing -c quantopian -c quantopian/label/ci
      RECIPE_OUTPUT=$(conda build conda/$recipe --python=$CONDA_PY --numpy=$CONDA_NPY --output)
      if [[ -f "$RECIPE_OUTPUT" && "$DO_UPLOAD" = "true" ]]; then anaconda -t $ANACONDA_TOKEN upload "$RECIPE_OUTPUT" -u quantopian --label ci; fi
    done

  - conda create -n testenv --use-local --yes -c quantopian pip python=$TRAVIS_PYTHON_VERSION numpy=$NUMPY_VERSION scipy=$SCIPY_VERSION libgfortran=3.0 ta-lib=$TALIB_VERSION
  - source activate testenv

  - CACHE_DIR="$HOME/.cache/.pip/pip_np""$CONDA_NPY"
  - pip install --upgrade pip coverage coveralls --cache-dir=$CACHE_DIR
  - pip install -r etc/requirements.txt --cache-dir=$CACHE_DIR
  - pip install -r etc/requirements_dev.txt --cache-dir=$CACHE_DIR
  - pip install -r etc/requirements_blaze.txt --cache-dir=$CACHE_DIR  # this uses git requirements right now
  - pip install -r etc/requirements_talib.txt --cache-dir=$CACHE_DIR
  - pip install -e .[all] --cache-dir=$CACHE_DIR
before_script:
  - pip freeze | sort
script:
  - flake8 catalyst tests
  - nosetests --with-coverage
  # deactive env to get access to anaconda command
  - source deactivate

  # unshallow the clone so the conda build can clone it.
  - git fetch --unshallow
  - exec 3>&1; ZP_OUT=$(conda build conda/catalyst --python=$CONDA_PY --numpy=$CONDA_NPY -c quantopian -c quantopian/label/ci | tee >(cat - >&3))
  - ZP_OUTPUT=$(echo "$ZP_OUT" | grep "anaconda upload" | awk '{print $NF}')
  - if [[ "$DO_UPLOAD" = "true" ]]; then anaconda -t $ANACONDA_TOKEN upload $ZP_OUTPUT -u quantopian --label ci; fi
  # reactivate env (necessary for coveralls)
  - source activate testenv

after_success:
  - coveralls

branches:
  only:
    - master
