change layout
This commit is contained in:
@@ -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.go,logic、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
|
||||
Reference in New Issue
Block a user