Files
gjs be8f89f449
CI / changes (push) Successful in 5s
CI / docker-bff (push) Failing after 7s
CI / docker-product (push) Failing after 5s
CI / docker-admin (push) Failing after 4s
CI / docker-user (push) Failing after 6s
change layout
2026-08-20 15:41:44 +08:00

89 lines
2.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
RPC_ROOT="${SCRIPT_DIR}/.."
THIRD_PARTY="${RPC_ROOT}/../pkg/third_party"
LOG_FILE="${SCRIPT_DIR}/gen-rpc.log"
exec > >(tee "${LOG_FILE}") 2>&1
function gen_one() {
local svc="$1"
echo "===== Processing ${svc} ====="
PROTO="${RPC_ROOT}/${svc}/${svc}.proto"
# pb输出目录,rpc目录下
RPC_SVC_DIR="${RPC_ROOT}/${svc}"
PB_OUT="${RPC_SVC_DIR}/pb"
# zrpc直接输出到services/${svc}
ZRPC_OUT="${RPC_ROOT}/../services/${svc}"
mkdir -p "${PB_OUT}"
mkdir -p "${ZRPC_OUT}/internal/server"
# 关键:只删除server.gologic、dao、etc全部保留不动
rm -f "${ZRPC_OUT}/internal/server/${svc}server.go"
goctl rpc protoc "${PROTO}" \
--proto_path="${THIRD_PARTY}" \
--proto_path="${RPC_ROOT}" \
--module=lone-services \
--go_out="${PB_OUT}" \
--go-grpc_out="${PB_OUT}" \
--go_opt=M"${svc}/${svc}.proto"="./" \
--go-grpc_opt=M"${svc}/${svc}.proto"="./" \
--zrpc_out="${ZRPC_OUT}" \
--style=goZero
# rm -rf "${PB_OUT}/lone-services"
# 清理rpc目录中goctl意外生成的垃圾(etc/internal/server/client等),只保留proto/pb
# rm -rf "${RPC_SVC_DIR:?}/etc"
# rm -rf "${RPC_SVC_DIR:?}/internal"
# rm -rf "${RPC_SVC_DIR:?}/server"
# rm -rf "${RPC_SVC_DIR:?}/${svc}Client"
# rm -f "${RPC_SVC_DIR:?}/${svc}.go"
protoc "${PROTO}" \
-I"${THIRD_PARTY}" \
-I"${RPC_ROOT}" \
--include_imports \
--descriptor_set_out="${RPC_SVC_DIR}/${svc}.pb"
echo "===== Completed ${svc} ====="
echo
}
function scan_all_services() {
local services=()
for dir in "${RPC_ROOT}"/*/; do
svc=$(basename "${dir%/}")
proto_file="${RPC_ROOT}/${svc}/${svc}.proto"
if [[ -f "${proto_file}" ]]; then
services+=("${svc}")
fi
done
echo "${services[@]}"
}
ALL_SERVICES=($(scan_all_services))
if [ $# -ge 1 ]; then
for svc in "$@"; do
proto_file="${RPC_ROOT}/${svc}/${svc}.proto"
if [[ ! -f "${proto_file}" ]]; then
echo "[ERROR] rpc service [${svc}] not found, missing proto file"
exit 1
fi
gen_one "${svc}"
done
else
for svc in "${ALL_SERVICES[@]}"; do
gen_one "${svc}"
done
echo "All rpc code & apisix descriptor generated finished"
if [ -t 0 ]; then
read -r -p "Press Enter to exit..."
fi
fi