#!/bin/bash -ex

# Ensure the repository is clean after code generation.
./script/generate
test -z "$(git status --porcelain)"

# Still clean after formatting.
./script/fmt
test -z "$(git status --porcelain)"

# And it's still clean after asmfmt.
# Note: we want to confirm we agree with asmfmt without actually depending on it.
find . -name '*.s' | xargs asmfmt -w
test -z "$(git status --porcelain)"

# Run suite of golangci-lint checks.
# (Provide examples directory explicitly since it is skipped by default.)
golangci-lint run ./... ./examples/...

# Check asm declarations.
go vet -vettool=$(which asmvet) ./...

# Custom linters.
./script/linter/pkgdoc
