change layout
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

This commit is contained in:
2026-08-20 15:41:44 +08:00
parent 57e04be304
commit be8f89f449
176 changed files with 7009 additions and 4498 deletions
+89
View File
@@ -0,0 +1,89 @@
#!/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