Generate stringer files automatically #841
|
@ -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
haha,
stringer
wasn't installed! (and we may need to tweakPATH
unless GH does it for us)