diff --git a/.gitignore b/.gitignore index b873546..6eec620 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor bin +.vscode diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..5b1b861 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,10 @@ +language: go + +go: +- 1.12.x +env: + - GO111MODULE=on +script: +- ./ci/ensuremod.sh +- ./ci/lint.sh +- go test -v ./... diff --git a/ci/ensuremod.sh b/ci/ensuremod.sh new file mode 100755 index 0000000..a974d6b --- /dev/null +++ b/ci/ensuremod.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# inspired by nhooyr's days as CI overlord + +set -eou pipefail + +function help() { + echo + echo "you may need to update go.mod/go.sum via:" + echo "go list all > /dev/null" + echo "go mod tidy" + exit 1 +} + +go list -mod=readonly all > /dev/null + +go mod tidy + +if [[ $(git diff --name-only) != "" ]]; then + git diff + help +fi diff --git a/ci/lint.sh b/ci/lint.sh new file mode 100755 index 0000000..76d26c1 --- /dev/null +++ b/ci/lint.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Inspired by nhooyr's days as CI overlord. + +set -euo pipefail + +files=$(gofmt -l -s .) + +if [ ! -z "$files" ]; +then + echo "The following files need to be formatted:" + echo "$files" + echo "Please run 'gofmt -w -s .'" + exit 1 +fi + +go vet -composites=false .