github.com/jhump/protoreflect@v1.16.0/internal/testprotos/make_protos.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  set -e
     4  
     5  cd $(dirname $0)
     6  
     7  PROTOC_VERSION="26.1"
     8  PROTOC_ARTIFACT_VERSION="26.1"
     9  PROTOC_OS="$(uname -s)"
    10  PROTOC_ARCH="$(uname -m)"
    11  case "${PROTOC_OS}" in
    12    Darwin) PROTOC_OS="osx" ;;
    13    Linux) PROTOC_OS="linux" ;;
    14    *)
    15      echo "Invalid value for uname -s: ${PROTOC_OS}" >&2
    16      exit 1
    17  esac
    18  
    19  # This is for macs with M1 chips. Precompiled binaries for osx/amd64 are not available for download, so for that case
    20  # we download the x86_64 version instead. This will work as long as rosetta2 is installed.
    21  if [ "$PROTOC_OS" = "osx" ] && [ "$PROTOC_ARCH" = "arm64" ]; then
    22    PROTOC_ARCH="x86_64"
    23  fi
    24  
    25  PROTOC="${PWD}/protoc/bin/protoc"
    26  
    27  if [[ "$(${PROTOC} --version 2>/dev/null)" != "libprotoc ${PROTOC_VERSION}" ]]; then
    28    rm -rf ./protoc
    29    mkdir -p protoc
    30    curl -L "https://github.com/google/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_ARTIFACT_VERSION}-${PROTOC_OS}-${PROTOC_ARCH}.zip" > protoc/protoc.zip
    31    cd ./protoc && unzip protoc.zip && cd ..
    32  fi
    33  
    34  go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.33.1-0.20240319125436-3039476726e4
    35  go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2.0
    36  go install github.com/jhump/protoreflect/desc/sourceinfo/cmd/protoc-gen-gosrcinfo
    37  
    38  # Output directory will effectively be GOPATH/src.
    39  outdir="."
    40  ${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" --experimental_editions -I. *.proto
    41  ${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. nopkg/*.proto
    42  ${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. pkg/*.proto
    43  ${PROTOC} "--go_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. proto3_optional/desc_test_proto3_optional.proto
    44  ${PROTOC} "--go_out=paths=source_relative:$outdir" "--go-grpc_out=paths=source_relative:$outdir" "--gosrcinfo_out=paths=source_relative,debug:$outdir" -I. grpc/*.proto
    45  
    46  # And make descriptor set (with source info) for several files
    47  ${PROTOC} --descriptor_set_out=./desc_test1.protoset --include_source_info --include_imports -I. desc_test1.proto
    48  ${PROTOC} --descriptor_set_out=./desc_test_comments.protoset --include_source_info --include_imports -I. desc_test_comments.proto
    49  ${PROTOC} --descriptor_set_out=./desc_test_complex.protoset -I. desc_test_complex.proto
    50  ${PROTOC} --descriptor_set_out=./desc_test_complex_source_info.protoset --include_source_info --include_imports -I. desc_test_complex.proto
    51  ${PROTOC} --descriptor_set_out=./desc_test_editions.protoset --experimental_editions -I. desc_test_editions.proto
    52  ${PROTOC} --descriptor_set_out=./descriptor.protoset --include_source_info --include_imports -I./protoc/include/ google/protobuf/descriptor.proto
    53  ${PROTOC} --descriptor_set_out=./duration.protoset -I./protoc/include/ google/protobuf/duration.proto
    54  ${PROTOC} --descriptor_set_out=./proto3_optional/desc_test_proto3_optional.protoset --include_source_info --include_imports -I. proto3_optional/desc_test_proto3_optional.proto
    55