language: generic
sudo: false

branches:
  only:
    - master

os:
  - linux
  - osx

env:
  - PYTHON_VERSION=3.6 HAS_GDAL=true
  - PYTHON_VERSION=3.6 HAS_GDAL=false
  - PYTHON_VERSION=3.7 HAS_GDAL=true
  - PYTHON_VERSION=3.7 HAS_GDAL=false
  - PYTHON_VERSION=3.8 HAS_GDAL=true
  - PYTHON_VERSION=3.8 HAS_GDAL=false
before_install:
  # We do this conditionally because it saves us some downloading if the
  # version is the same.
  - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
      wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
    else
      curl -o miniconda.sh  https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-x86_64.sh;
    fi
  - bash miniconda.sh -b -p $HOME/miniconda
  - export PATH="$HOME/miniconda/bin:$PATH"
  - hash -r
  - conda config --set always_yes yes --set changeps1 no
  - conda update -q conda
  # Useful for debugging any issues with conda
  - conda info -a
  # Create the env
  - conda create -q -n test python=$PYTHON_VERSION
  - source activate test
  # https://github.com/travis-ci/travis-ci/issues/8982
  - python -c "import fcntl; fcntl.fcntl(1, fcntl.F_SETFL, 0)"

install:
  - conda config --add channels usgs-astrogeology
  - conda config --add channels conda-forge
  - if $HAS_GDAL; then
      conda env update -n test -f environment.yml;
    else
      conda env update -n test -f environment_noGDAL.yml;
    fi

script:
  - pytest --cov=plio

after_success:
  - coveralls
  # Need to do the build in the root
  - source deactivate
  - conda install -q conda-build anaconda-client
  - conda config --set anaconda_upload no
  - travis_wait conda build recipe -q
  - travis_wait builddir=(`conda build recipe --output`)
  - |
    if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
      anaconda -t="$CONDA_UPLOAD_TOKEN" upload -l dev --force $builddir;
    fi

  # Docs to gh-pages
  - source activate test  # Reactivate the env to have all deps installed.
  - pip install travis-sphinx
  - travis-sphinx build --source=docs --nowarn # The sphinx build script
  - travis-sphinx deploy

notifications:
  webhooks:
    on_success: always
    on_failure: always
    on_start: never
  email:
      recipients:
        - jlaura@usgs.gov
      on_success: always
      on_failure: always