Skip to content

Commit 741052b

Browse files
committed
build: add proto generation script
1 parent 40675aa commit 741052b

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

scripts/generate-proto.sh

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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

Comments
 (0)