Generate stringer files automatically
Added `stringer` annotations to `git.go` for `ErrorClass` and `ErrorCode`. Added `generate` rule for `Makefile` to generate string representations for these types (first building cgo files in `_obj` dir to get C constants). Finally, updated `ci` actions workflow to check that generated files are up to date. Ticket: #543
This commit is contained in:
parent
9b155184fe
commit
f633706986
|
@ -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)
|
||||
|
|
14
Makefile
14
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)
|
||||
|
|
2
git.go
2
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 (
|
||||
|
|
Loading…
Reference in New Issue