12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- #!/bin/bash
- set -e
- # Install the working tree's protoc-gen-gen in a tempdir.
- tmpdir=$(mktemp -d -t regen-wkt.XXXXXX)
- trap 'rm -rf $tmpdir' EXIT
- mkdir -p $tmpdir/bin
- PATH=$tmpdir/bin:$PATH
- GOBIN=$tmpdir/bin go install ./protoc-gen-go
- # Public imports require at least Go 1.9.
- supportTypeAliases=""
- if go list -f '{{context.ReleaseTags}}' runtime | grep -q go1.9; then
- supportTypeAliases=1
- fi
- # Generate various test protos.
- PROTO_DIRS=(
- jsonpb/jsonpb_test_proto
- proto
- protoc-gen-go/testdata
- )
- for dir in ${PROTO_DIRS[@]}; do
- for p in `find $dir -name "*.proto"`; do
- if [[ $p == */import_public/* && ! $supportTypeAliases ]]; then
- echo "# $p (skipped)"
- continue;
- fi
- echo "# $p"
- protoc -I$dir --go_out=plugins=grpc,paths=source_relative:$dir $p
- done
- done
- # Deriving the location of the source protos from the path to the
- # protoc binary may be a bit odd, but this is what protoc itself does.
- PROTO_INCLUDE=$(dirname $(dirname $(which protoc)))/include
- # Well-known types.
- WKT_PROTOS=(any duration empty struct timestamp wrappers)
- for p in ${WKT_PROTOS[@]}; do
- echo "# google/protobuf/$p.proto"
- protoc --go_out=paths=source_relative:$tmpdir google/protobuf/$p.proto
- cp $tmpdir/google/protobuf/$p.pb.go ptypes/$p
- cp $PROTO_INCLUDE/google/protobuf/$p.proto ptypes/$p
- done
- # descriptor.proto.
- echo "# google/protobuf/descriptor.proto"
- protoc --go_out=paths=source_relative:$tmpdir google/protobuf/descriptor.proto
- cp $tmpdir/google/protobuf/descriptor.pb.go protoc-gen-go/descriptor
- cp $PROTO_INCLUDE/google/protobuf/descriptor.proto protoc-gen-go/descriptor
|