diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50e5e14..0edadb2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,3 +105,19 @@ jobs: sudo ./script/build-libgit2.sh --static --system - name: Test run: go test --count=1 --tags "static,system_libgit2" ./... + + check-generate: + name: Check generated files were not modified + runs-on: ubuntu-20.04 + steps: + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: '1.17' + id: go + - name: Check out code into the Go module directory + uses: actions/checkout@v2 + - name: Generate files + run: make generate + - name: Check nothing changed + run: git diff --quiet --exit-code || (echo "detected changes after generate" && exit 1) diff --git a/Makefile b/Makefile index 84262f4..f887648 100644 --- a/Makefile +++ b/Makefile @@ -53,3 +53,17 @@ test-static: static-build/install/lib/libgit2.a install-static: static-build/install/lib/libgit2.a go install --tags "static" ./... + +define _gen_file + rm -fr _obj + go tool cgo $(1) + find ./_obj -type f ! -name '*.go' -exec rm {} \; + mv ./_obj/_cgo_gotypes.go ./_obj/cgo_gotypes.go + cd ./_obj && go generate ./... + find ./_obj -type f -name '*_string.go' -exec mv -v {} . \; + rm -fr ./_obj +endef + +generate: + $(call _gen_file,diff.go) + $(call _gen_file,git.go) diff --git a/git.go b/git.go index 383c492..b7c8b3c 100644 --- a/git.go +++ b/git.go @@ -14,6 +14,7 @@ import ( "unsafe" ) +//go:generate stringer -type ErrorClass -trimprefix ErrorClass -tags static type ErrorClass int const ( @@ -48,6 +49,7 @@ const ( ErrorClassPatch ErrorClass = C.GIT_ERROR_PATCH ) +//go:generate stringer -type ErrorCode -trimprefix ErrorCode -tags static type ErrorCode int const (