prometheus/scripts/genproto.sh
Callum Styan 842d221814 wip move off of gogoproto
Co-authored-by: Austin Cawley-Edwards <austin.cawley@gmail.com>
Signed-off-by: Callum Styan <callumstyan@gmail.com>
2023-11-28 10:37:05 -08:00

85 lines
2.4 KiB
Bash
Executable file

#!/usr/bin/env bash
#
# Generate all protobuf bindings.
# Run from repository root.
set -e
set -u
if ! [[ "$0" =~ "scripts/genproto.sh" ]]; then
echo "must be run from repository root"
exit 255
fi
# if ! [[ $(protoc --version) =~ "3.15.8" ]]; then
# echo "could not find protoc 3.15.8, is it installed + in PATH?"
# exit 255
# fi
# Since we run go install, go mod download, the go.sum will change.
# Make a backup.
cp go.sum go.sum.bak
INSTALL_PKGS=(
"golang.org/x/tools/cmd/goimports"
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway"
"github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger"
)
for pkg in "${INSTALL_PKGS[@]}"; do
echo "installing $pkg"
done
GET_PKGS=(
"google.golang.org/protobuf/cmd/protoc-gen-go@v1.31.0"
"google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.3.0"
)
for pkg in "${GET_PKGS[@]}"; do
echo "getting $pkg"
GO111MODULE=on go get "$pkg"
done
MAPPINGS=(
"google/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor"
)
MAPPING_ARG=""
for mapping in "${MAPPINGS[@]}"
do
MAPPING_ARG+="M$mapping"
done
PROM_ROOT="${PWD}"
PROM_PATH="${PROM_ROOT}/prompb"
# GOGOPROTO_ROOT="$(GO111MODULE=on go list -mod=readonly -f '{{ .Dir }}' -m github.com/gogo/protobuf)"
# GOGOPROTO_PATH="${GOGOPROTO_ROOT}:${GOGOPROTO_ROOT}/protobuf"
GRPC_GATEWAY_ROOT="$(GO111MODULE=on go list -mod=readonly -f '{{ .Dir }}' -m github.com/grpc-ecosystem/grpc-gateway)"
DIRS="prompb"
echo "generating code"
for dir in ${DIRS}; do
pushd ${dir}
protoc \
--go_out="$MAPPING_ARG":. \
--go_opt=paths=source_relative \
--go-grpc_out="$MAPPING_ARG":. \
--go-grpc_opt=paths=source_relative \
-I=. \
-I="${PROM_PATH}" \
-I="${GRPC_GATEWAY_ROOT}/third_party/googleapis" \
./*.proto
# protoc --gogofast_out=Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,paths=source_relative:. -I=. \
# -I="${GOGOPROTO_PATH}" \
# ./io/prometheus/client/*.proto
# sed -i.bak -E 's/import _ \"github.com\/gogo\/protobuf\/gogoproto\"//g' -- *.pb.go
# sed -i.bak -E 's/import _ \"google\/protobuf\"//g' -- *.pb.go
# sed -i.bak -E 's/\t_ \"google\/protobuf\"//g' -- *.pb.go
# sed -i.bak -E 's/golang\/protobuf\/descriptor/gogo\/protobuf\/protoc-gen-gogo\/descriptor/g' -- *.go
# sed -i.bak -E 's/golang\/protobuf/gogo\/protobuf/g' -- *.go
# rm -f -- *.bak
rm -f ./*.bak
goimports -w ./*.go ./io/prometheus/client/*.go
popd
done
mv go.sum.bak go.sum