language: go

os:
  - linux
  - osx
  - windows

arch:
  - amd64
  - arm64

go:
  - 1.13.x
  - 1.14.x
  - 1.15.x
  - 1.16.x
  - master

env:
  - CGO_ENABLED=0

script:
  - go vet ./...
  - go test -test.v -test.run ^TestCPUID$
  - CGO_ENABLED=1 go test -race ./...
  - go test -tags=nounsafe -test.v -test.run ^TestCPUID$
  - go test -tags=noasm ./...
  - go run ./cmd/cpuid/main.go
  - go run ./cmd/cpuid/main.go -json

matrix:
  allow_failures:
    - go: 'master'
  fast_finish: true
  include:
    - stage: other
      go: 1.16.x
      os: linux
      arch: amd64
      script:
        - diff <(gofmt -d .) <(printf "")
        - diff <(gofmt -d ./private) <(printf "")
        - curl -sfL https://git.io/goreleaser | VERSION=v0.157.0 sh -s -- check # check goreleaser config for deprecations
        - curl -sL https://git.io/goreleaser | VERSION=v0.157.0 sh -s -- --snapshot --skip-publish --rm-dist
        - go get github.com/klauspost/asmfmt&&go install github.com/klauspost/asmfmt/cmd/asmfmt
        - diff <(asmfmt -d .) <(printf "")
        - GOOS=linux GOARCH=386 go test .
        - ./test-architectures.sh
    - stage: other
      go: 1.15.x
      os: linux
      arch: amd64
      script:
        - ./test-architectures.sh

deploy:
  - provider: script
    skip_cleanup: true
    script: curl -sL https://git.io/goreleaser | VERSION=v0.157.0 bash || true
    on:
      tags: true
      condition: ($TRAVIS_OS_NAME = linux) && ($TRAVIS_CPU_ARCH = amd64)
      go: 1.16.x
branches:
  only:
    - master
    - /^v\d+\.\d+(\.\d+)?(-\S*)?$/