#!/bin/bash set -e source $(dirname $0)/version cd "$(dirname $0)/.." if ! command -v golangci-lint; then echo Running: go fmt echo Skipping validation: no golangci-lint available test -z "$(go fmt ./... | tee /dev/stderr)" exit fi echo Running: golangci-lint golangci-lint run echo Tidying up modules go mod tidy echo Verifying modules go mod verify dirty_files="$(git status --porcelain --untracked-files=no)" if [ -n "$dirty_files" ]; then echo "Encountered dirty repo! Aborting." echo "If you're seeing this, it means there are uncommitted changes in the repo." echo "If you're seeing this in CI, it probably means that your Go modules aren't tidy, or more generally that running" echo "validation would result in changes to the repo. Make sure you're up to date with the upstream branch and run" echo "'go mod tidy' and commit the changes, if any. The offending changed files are as follows:" echo "$dirty_files" exit 1 fi