  language: go
  go:
    - "1.10"
    
# Don't email me the results of the test runs.
notifications:
  email: false

# Anything in before_script that returns a nonzero exit code will
# flunk the build and immediately stop. It's sorta like having
# set -e enabled in bash. 
before_script:
  - GO_FILES=$(find . -iname '*.go' -type f | grep -v /vendor/) # All the .go files, excluding vendor/
  - go get github.com/golang/lint/golint                        # Linter
  - go get honnef.co/go/tools/cmd/megacheck                     # Badass static analyzer/linter
  - go get github.com/fzipp/gocyclo

# script always run to completion (set +e). All of these code checks are must haves
# in a modern Go project.
script:
  - test -z $(gofmt -s -l $GO_FILES)         # Fail if a .go file hasn't been formatted with gofmt
  - go test -v -race ./...                   # Run all the tests with the race detector enabled
  - go vet ./...                             # go vet is the official Go static analyzer
  - megacheck ./...                          # "go vet on steroids" + linter
  - gocyclo -over 19 $GO_FILES               # forbid code with huge functions
  - golint -set_exit_status $(go list ./...) # one last linter

  language: go
  go:
    - "1.10"
    
# Don't email me the results of the test runs.
notifications:
  email: false

# Anything in before_script that returns a nonzero exit code will
# flunk the build and immediately stop. It's sorta like having
# set -e enabled in bash. 
before_script:
  - GO_FILES=$(find . -iname '*.go' -type f | grep -v /vendor/) # All the .go files, excluding vendor/
  - go get github.com/golang/lint/golint                        # Linter
  - go get honnef.co/go/tools/cmd/megacheck                     # Badass static analyzer/linter
  - go get github.com/fzipp/gocyclo

# script always run to completion (set +e). All of these code checks are must haves
# in a modern Go project.
script:
  - test -z $(gofmt -s -l $GO_FILES)         # Fail if a .go file hasn't been formatted with gofmt
  - go test -v -race ./...                   # Run all the tests with the race detector enabled
  - go vet ./...                             # go vet is the official Go static analyzer
  - megacheck ./...                          # "go vet on steroids" + linter
  - gocyclo -over 19 $GO_FILES               # forbid code with huge functions
  - golint -set_exit_status $(go list ./...) # one last linter

# Handle git submodules yourself
git:
    submodules: false
# Use sed to replace the SSH URL with the public URL, then initialize submodules
before_install:
    - sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules
    - git submodule update --init --recursive

Fix git submodules in Travis CI
Fix git submodules in Travis CI