dist: trusty

git:
  depth: 9999999

language: go

services:
  - docker

addons:
  apt:
    sources:
    - ubuntu-toolchain-r-test
    packages:
    - libxml2-dev
    - gcc-6
    - g++-6

go_import_path: gopkg.in/src-d/hercules.v3
go:
  - 1.8
  - 1.9

stages:
  - test
  - deploy

env:
  - PROTOC_VERSION=3.5.1 TENSORFLOW_VERSION=1.6.0

before_install:
  - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 90
  - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 90
  - wget -O protoc.zip https://github.com/google/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-linux-x86_64.zip
  - unzip -d ~/.local protoc.zip && rm protoc.zip
  - go get -v github.com/golang/lint/golint
  - git clone --depth 1 https://github.com/src-d/go-git $GOPATH/src/gopkg.in/src-d/go-git.v4
  - wget https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py --user && rm get-pip.py
  - export PATH=~/usr/bin:$PATH
  - make --version
  - pip3 --version
  - pip3 install --user -r requirements.txt tensorflow
  - docker run -d --privileged -p 9432:9432 --name bblfshd bblfsh/bblfshd
  - docker exec -it bblfshd bblfshctl driver install --all
  - curl -L "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-$(go env GOOS)-x86_64-$TENSORFLOW_VERSION.tar.gz" | sudo tar -C /usr/local -xz
  - sudo ldconfig
install:
  - make
script:
  - set -e
  - go vet ./...
  - golint -set_exit_status ./...
  - go test -tags tensorflow -v -cpu=1,2 -coverprofile=coverage.txt -covermode=count gopkg.in/src-d/hercules.v3
  - $GOPATH/bin/hercules version
  - $GOPATH/bin/hercules --burndown --couples --quiet --pb https://github.com/src-d/hercules > 1.pb
  - cp 1.pb 2.pb
  - $GOPATH/bin/hercules combine 1.pb 2.pb > 12.pb
  - ($GOPATH/bin/hercules generate-plugin -n MyPlug -o myplug && cd myplug && make)
  - (cd contrib/_plugin_example && make)
  - $GOPATH/bin/hercules --burndown --burndown-files --burndown-people --couples --quiet https://github.com/src-d/hercules | python3 labours.py -m all -o out --backend Agg --disable-projector
  - $GOPATH/bin/hercules --burndown --burndown-files --burndown-people --couples --quiet --pb https://github.com/src-d/hercules | python3 labours.py -f pb -m all -o out --backend Agg --disable-projector
  - $GOPATH/bin/hercules --sentiment --quiet --languages Python https://github.com/src-d/hercules
  - set +e
after_success:
  - bash <(curl -s https://codecov.io/bash)

jobs:
  include:
    - stage: deploy
      os: osx
      go: 1.9
      before_install:
        - wget -O protoc.zip https://github.com/google/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-osx-x86_64.zip
        - unzip -d ~/.local protoc.zip && rm protoc.zip
      after_success:
        - gzip -S .darwin_amd64.gz $GOPATH/bin/hercules
      script: skip
      install:
        - DISABLE_TENSORFLOW=1 make
      deploy:
        provider: releases
        api_key:
          secure: $GITHUB_TOKEN
        file: "$GOPATH/bin/hercules.darwin_amd64.gz"
        skip_cleanup: true
        on:
          tags: true
    - stage: deploy
      os: linux
      go: 1.9
      before_install:
        - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-6 90
        - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-6 90
        - wget -O protoc.zip https://github.com/google/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-linux-x86_64.zip
        - unzip -d ~/.local protoc.zip && rm protoc.zip
        - curl -L "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-cpu-$(go env GOOS)-x86_64-$TENSORFLOW_VERSION.tar.gz" | sudo tar -C /usr/local -xz
        - sudo ldconfig
      script: skip
      install:
        - make
      after_success:
        - gzip -S .linux_amd64.gz $GOPATH/bin/hercules
      deploy:
        provider: releases
        api_key:
          secure: $GITHUB_TOKEN
        file: "$GOPATH/bin/hercules.linux_amd64.gz"
        skip_cleanup: true
        on:
          tags: true

notifications:
  email: false
