| #!/bin/bash -e | |
| # | |
| # This script rebuilds the generated code for the protocol buffers. | |
| # To run this you will need protoc and goprotobuf installed; | |
| # see https://github.com/golang/protobuf for instructions. | |
| PKG=google.golang.org/appengine | |
| function die() { | |
| echo 1>&2 $* | |
| exit 1 | |
| } | |
| # Sanity check that the right tools are accessible. | |
| for tool in go protoc protoc-gen-go; do | |
| q=$(which $tool) || die "didn't find $tool" | |
| echo 1>&2 "$tool: $q" | |
| done | |
| echo -n 1>&2 "finding package dir... " | |
| pkgdir=$(go list -f '{{.Dir}}' $PKG) | |
| echo 1>&2 $pkgdir | |
| base=$(echo $pkgdir | sed "s,/$PKG\$,,") | |
| echo 1>&2 "base: $base" | |
| cd $base | |
| # Run protoc once per package. | |
| for dir in $(find $PKG/internal -name '*.proto' | xargs dirname | sort | uniq); do | |
| echo 1>&2 "* $dir" | |
| protoc --go_out=. $dir/*.proto | |
| done | |
| for f in $(find $PKG/internal -name '*.pb.go'); do | |
| # Remove proto.RegisterEnum calls. | |
| # These cause duplicate registration panics when these packages | |
| # are used on classic App Engine. proto.RegisterEnum only affects | |
| # parsing the text format; we don't care about that. | |
| # https://code.google.com/p/googleappengine/issues/detail?id=11670#c17 | |
| sed -i '/proto.RegisterEnum/d' $f | |
| done |