12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #!/bin/bash
- # 添加必要的工具路径
- export PATH=$PATH:/usr/local/bin:$(go env GOPATH)/bin
- # 进入 proto 文件目录
- cd bin/client_msg || { echo "Error: Failed to enter bin/client_msg"; exit 1; }
- # 目标目录(确保存在)
- TARGET_DIR="../../src/server/msg"
- mkdir -p "$TARGET_DIR" || { echo "Error: Failed to create $TARGET_DIR"; exit 1; }
- # 遍历所有 .proto 文件并编译
- for proto_file in *.proto; do
- if [ -f "$proto_file" ]; then
- echo "Compiling $proto_file..."
- # 生成 Go 代码(自动处理 go_package 路径)
- protoc --proto_path=. --go_out=paths=source_relative:. "$proto_file" || {
- echo "Error: protoc failed for $proto_file"
- exit 1
- }
- # 提取 go_package 名称(从 .proto 文件中解析)
- go_package=$(grep "^option go_package" "$proto_file" | awk -F'"' '{print $2}')
- if [ -z "$go_package" ]; then
- echo "Warning: Missing 'option go_package' in $proto_file, using default"
- go_package="msg"
- fi
- # 移动生成的 .pb.go 文件
- gen_file="${proto_file%.proto}.pb.go"
- if [ -f "$gen_file" ]; then
- mv "$gen_file" "$TARGET_DIR/" || {
- echo "Error: Failed to move $gen_file"
- exit 1
- }
- echo "Moved $gen_file to $TARGET_DIR/"
- else
- echo "Error: Generated file $gen_file not found"
- exit 1
- fi
- fi
- done
- echo "All proto files compiled and moved successfully!"
|