opentelemetry-python-contrib/exporter/opentelemetry-exporter-prom.../proto/generate-proto-py.sh

58 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
set -e
PROM_VERSION=v2.39.0
PROTO_VERSION=v1.3.2
# SRC_DIR is from protoc perspective. ie its the destination for our checkouts/clones
SRC_DIR=opentelemetry/exporter/prometheus_remote_write/gen/
#TODO:
# Check that black & protoc are installed properly
echo "Creating our destination directory"
mkdir -p ${SRC_DIR}/gogoproto
# Clone prometheus
echo "Grabbing Prometheus protobuf files"
git clone --filter=blob:none --sparse https://github.com/prometheus/prometheus.git
cd prometheus
git checkout ${PROM_VERSION}
git sparse-checkout set prompb
cd ..
# We also need gogo.proto which is in the protobuf Repo
# Could also try to pull this locally from the install location of protobuf
# but that will be harder in a platform agnostic way.
echo "Grabbing gogo.proto"
git clone --filter=blob:none --sparse https://github.com/gogo/protobuf.git
cd protobuf
git checkout ${PROTO_VERSION}
git sparse-checkout set /gogoproto/gogo.proto
cd ..
# Move the proto files into our structure
echo "Moving proto files to ${SRC_DIR}"
cp prometheus/prompb/remote.proto prometheus/prompb/types.proto ${SRC_DIR}
cp protobuf/gogoproto/gogo.proto ${SRC_DIR}/gogoproto/
# A bit of a hack, but we need to fix the imports to fit the python structure.
# using sed to find the 3 files and point them at each other using OUR structure
echo "Fixing imports"
sed -i 's/import "types.proto";/import "opentelemetry\/exporter\/prometheus_remote_write\/gen\/types.proto";/' ${SRC_DIR}/remote.proto
sed -i 's/import "gogoproto\/gogo.proto";/import "opentelemetry\/exporter\/prometheus_remote_write\/gen\/gogoproto\/gogo.proto";/' ${SRC_DIR}/remote.proto
sed -i 's/import "gogoproto\/gogo.proto";/import "opentelemetry\/exporter\/prometheus_remote_write\/gen\/gogoproto\/gogo.proto";/' ${SRC_DIR}/types.proto
# Cleanup the repos
echo "Removing clones..."
rm -rf protobuf prometheus
# Used libprotoc 26
echo "Compiling proto files to Python"
protoc -I . --python_out=../src ${SRC_DIR}/gogoproto/gogo.proto ${SRC_DIR}/remote.proto ${SRC_DIR}/types.proto
echo "Running formatting on the generated files"
../../../scripts/eachdist.py format --path $PWD/..