name: Go
on:
  push:
    branches:
      - master
      - develop
    paths-ignore:
      - '*.md'
  pull_request:
    branches:
      - master
      - develop
    paths-ignore:
      - '*.md'
jobs:

  test:
    name: test
    runs-on: ubuntu-latest
    strategy:
      matrix:
        go: [ '1.12.x', '1.13.x', '1.14.x']
    steps:

    - name: Setup go
      uses: actions/setup-go@v1
      with:
        go-version: ${{ matrix.go }}
      id: go

    - name: Check out code into the Go module directory
      uses: actions/checkout@v2

    - name: Set GOPATH
      # temporary fix
      # see https://github.com/actions/setup-go/issues/14
      run: |
        echo "##[set-env name=GOPATH;]$(dirname $GITHUB_WORKSPACE)"
        echo "##[add-path]$(dirname $GITHUB_WORKSPACE)/bin"
      shell: bash

    - uses: actions/cache@v1
      with:
        path: ~/go/pkg/mod
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ runner.os }}-go-

    - name: Get dependencies
      run: | 
        go get -u -v golang.org/x/lint/golint
        go mod tidy -v

    - name: Linter
      run: golint -set_exit_status ./...

    - name: Tests
      run: go test -coverprofile=coverage.txt -covermode=atomic ./...

    - name: Codecov
      env:
        CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} 
      run: bash <(curl -s https://codecov.io/bash)