|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +set -e |
| 4 | + |
| 5 | +# Colors |
| 6 | +RED='\033[0;31m' |
| 7 | +GREEN='\033[0;32m' |
| 8 | +YELLOW='\033[1;33m' |
| 9 | +NC='\033[0m' |
| 10 | + |
| 11 | +echo -e "${GREEN}Generating Protocol Buffer code...${NC}" |
| 12 | + |
| 13 | +# Create output directories |
| 14 | +mkdir -p sdks/mcpulse-python/pb |
| 15 | +mkdir -p sdks/mcpulse-go/pb |
| 16 | +mkdir -p internal/server/grpc/pb |
| 17 | + |
| 18 | +# Check if protoc is installed |
| 19 | +if ! command -v protoc &> /dev/null; then |
| 20 | + echo -e "${RED}Error: protoc is not installed${NC}" |
| 21 | + echo "Install it from: https://grpc.io/docs/protoc-installation/" |
| 22 | + exit 1 |
| 23 | +fi |
| 24 | + |
| 25 | +# Check if protoc-gen-go is installed |
| 26 | +if ! command -v protoc-gen-go &> /dev/null; then |
| 27 | + echo -e "${YELLOW}Installing protoc-gen-go...${NC}" |
| 28 | + go install google.golang.org/protobuf/cmd/protoc-gen-go@latest |
| 29 | +fi |
| 30 | + |
| 31 | +# Check if protoc-gen-go-grpc is installed |
| 32 | +if ! command -v protoc-gen-go-grpc &> /dev/null; then |
| 33 | + echo -e "${YELLOW}Installing protoc-gen-go-grpc...${NC}" |
| 34 | + go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest |
| 35 | +fi |
| 36 | + |
| 37 | +# Generate Go code for sdk |
| 38 | +echo -e "${GREEN}Generating Go code for SDK...${NC}" |
| 39 | +protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mproto/analytics.proto=github.com/sirrobot01/mcpulse-go/pb \ |
| 40 | + --go-grpc_out=. --go-grpc_opt=paths=source_relative --go-grpc_opt=Mproto/analytics.proto=github.com/sirrobot01/mcpulse-go/pb \ |
| 41 | + --proto_path=. \ |
| 42 | + proto/*.proto |
| 43 | + |
| 44 | +# Move generated files to SDK |
| 45 | +mv proto/analytics.pb.go sdks/mcpulse-go/pb/ |
| 46 | +mv proto/analytics_grpc.pb.go sdks/mcpulse-go/pb/ |
| 47 | + |
| 48 | +# Generate Go code for server |
| 49 | +echo -e "${GREEN}Generating Go code for server...${NC}" |
| 50 | +protoc --go_out=. --go_opt=paths=source_relative --go_opt=Mproto/analytics.proto=github.com/sirrobot01/mcpulse/internal/server/grpc/pb \ |
| 51 | + --go-grpc_out=. --go-grpc_opt=paths=source_relative --go-grpc_opt=Mproto/analytics.proto=github.com/sirrobot01/mcpulse/internal/server/grpc/pb \ |
| 52 | + --proto_path=. \ |
| 53 | + proto/*.proto |
| 54 | + |
| 55 | +# Move generated files to server |
| 56 | +mv proto/analytics.pb.go internal/server/grpc/pb/ |
| 57 | +mv proto/analytics_grpc.pb.go internal/server/grpc/pb/ |
| 58 | + |
| 59 | + |
| 60 | +# Generate Python code (if grpcio-tools is installed) |
| 61 | +if command -v python3 &> /dev/null && python3 -c "import grpc_tools" 2>/dev/null; then |
| 62 | + echo -e "${GREEN}Generating Python code...${NC}" |
| 63 | + python3 -m grpc_tools.protoc \ |
| 64 | + --proto_path=. \ |
| 65 | + --python_out=sdks/mcpulse-python/mcpulse/pb \ |
| 66 | + --pyi_out=sdks/mcpulse-python/mcpulse/pb \ |
| 67 | + --grpc_python_out=sdks/mcpulse-python/mcpulse/pb \ |
| 68 | + proto/*.proto |
| 69 | +else |
| 70 | + echo -e "${YELLOW}Skipping Python generation (grpcio-tools not installed)${NC}" |
| 71 | +fi |
| 72 | + |
| 73 | +# Generate TypeScript code (if grpc-tools is installed) |
| 74 | +#if command -v grpc_tools_node_protoc &> /dev/null; then |
| 75 | +# echo -e "${GREEN}Generating TypeScript code...${NC}" |
| 76 | +# grpc_tools_node_protoc \ |
| 77 | +# --js_out=import_style=commonjs,binary:sdks/mcpulse-typescript/src/generated \ |
| 78 | +# --ts_out=sdks/mcpulse-typescript/src/generated \ |
| 79 | +# --grpc_out=grpc_js:sdks/mcpulse-typescript/src/generated \ |
| 80 | +# --plugin=protoc-gen-grpc=$(which grpc_tools_node_protoc_plugin) \ |
| 81 | +# -I. \ |
| 82 | +# proto/*.proto |
| 83 | +# |
| 84 | +# # Generate TypeScript definitions |
| 85 | +# protoc \ |
| 86 | +# --plugin=protoc-gen-ts=$(which protoc-gen-ts) \ |
| 87 | +# --ts_out=sdks/mcpulse-typescript/src/generated \ |
| 88 | +# -I. \ |
| 89 | +# proto/*.proto |
| 90 | +#else |
| 91 | +# echo -e "${YELLOW}Skipping TypeScript generation (grpc-tools not installed)${NC}" |
| 92 | +#fi |
| 93 | + |
| 94 | +echo -e "${GREEN}Protocol Buffer code generation complete!${NC}" |
0 commit comments