kat/scripts/gen-proto.sh
2025-05-10 18:18:58 -04:00

47 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# File: scripts/gen-proto.sh
set -xe
# Find protoc-gen-go
PROTOC_GEN_GO_PATH=""
if command -v protoc-gen-go &> /dev/null; then
PROTOC_GEN_GO_PATH=$(command -v protoc-gen-go)
elif [ -f "$(go env GOBIN)/protoc-gen-go" ]; then
PROTOC_GEN_GO_PATH="$(go env GOBIN)/protoc-gen-go"
elif [ -f "$(go env GOPATH)/bin/protoc-gen-go" ]; then
PROTOC_GEN_GO_PATH="$(go env GOPATH)/bin/protoc-gen-go"
else
echo "protoc-gen-go not found. Please run:"
echo "go install google.golang.org/protobuf/cmd/protoc-gen-go"
echo "And ensure GOBIN or GOPATH/bin is in your PATH."
exit 1
fi
# Project root assumed to be parent of 'scripts' directory
PROJECT_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"
API_DIR="${PROJECT_ROOT}/api/v1alpha1"
# Output generated code directly into the api/v1alpha1 directory, alongside kat.proto
# This is a common pattern and simplifies imports.
# The go_package option in kat.proto already points here.
OUT_DIR="${API_DIR}"
# Ensure output directory exists (it should, it's the same as API_DIR)
mkdir -p "$OUT_DIR"
echo "Generating Go code from Protobuf definitions..."
protoc --proto_path="${API_DIR}" \
--plugin="protoc-gen-go=${PROTOC_GEN_GO_PATH}" \
--go_out="${OUT_DIR}" --go_opt=paths=source_relative \
"${API_DIR}/kat.proto"
echo "Protobuf Go code generated in ${OUT_DIR}"
# Optional: Generate gRPC stubs if/when you add services
# PROTOC_GEN_GO_GRPC_PATH="" # Similar logic to find protoc-gen-go-grpc
# go install google.golang.org/grpc/cmd/protoc-gen-go-grpc
# protoc --proto_path="${API_DIR}" \
# --plugin="protoc-gen-go=${PROTOC_GEN_GO_PATH}" \
# --plugin="protoc-gen-go-grpc=${PROTOC_GEN_GO_GRPC_PATH}" \
# --go_out="${OUT_DIR}" --go_opt=paths=source_relative \
# --go-grpc_out="${OUT_DIR}" --go-grpc_opt=paths=source_relative \
# "${API_DIR}/kat.proto"