fx build fix
This commit is contained in:
@@ -6,6 +6,8 @@ REPO_ROOT="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
|
||||
API_DIR="${REPO_ROOT}/api"
|
||||
PROTO_DIR="./proto"
|
||||
PROTOC_BIN="${PROTOC:-protoc}"
|
||||
GO_MODULE="github.com/tech/sendico/pkg"
|
||||
GO_OUT_DIR="./pkg"
|
||||
|
||||
# Ensure required tools exist
|
||||
if ! command -v "${PROTOC_BIN}" >/dev/null 2>&1; then
|
||||
@@ -30,33 +32,29 @@ for cand in /usr/include /usr/local/include; do
|
||||
fi
|
||||
done
|
||||
|
||||
# Build an include-array only when non-empty
|
||||
PROTOC_I=()
|
||||
PROTOC_ARGS=""
|
||||
if [ -n "${PROTOC_INCLUDE}" ]; then
|
||||
PROTOC_I+=("-I=${PROTOC_INCLUDE}")
|
||||
PROTOC_ARGS="-I=${PROTOC_INCLUDE}"
|
||||
fi
|
||||
# Always include our proto tree
|
||||
PROTOC_I+=("-I=${PROTO_DIR}")
|
||||
PROTOC_ARGS="${PROTOC_ARGS} -I=${PROTO_DIR}"
|
||||
|
||||
generate_go() {
|
||||
local out_dir="$1"; shift
|
||||
mkdir -p "${out_dir}"
|
||||
# shellcheck disable=SC2086
|
||||
"${PROTOC_BIN}" \
|
||||
"${PROTOC_I[@]}" \
|
||||
--go_out="${out_dir}" \
|
||||
--go_opt=paths=source_relative \
|
||||
${PROTOC_ARGS} \
|
||||
--go_out="${GO_OUT_DIR}" \
|
||||
--go_opt=module="${GO_MODULE}" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
generate_go_with_grpc() {
|
||||
local out_dir="$1"; shift
|
||||
mkdir -p "${out_dir}"
|
||||
# shellcheck disable=SC2086
|
||||
"${PROTOC_BIN}" \
|
||||
"${PROTOC_I[@]}" \
|
||||
--go_out="${out_dir}" \
|
||||
--go_opt=paths=source_relative \
|
||||
--go-grpc_out="${out_dir}" \
|
||||
--go-grpc_opt=paths=source_relative \
|
||||
${PROTOC_ARGS} \
|
||||
--go_out="${GO_OUT_DIR}" \
|
||||
--go_opt=module="${GO_MODULE}" \
|
||||
--go-grpc_out="${GO_OUT_DIR}" \
|
||||
--go-grpc_opt=module="${GO_MODULE}" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
@@ -67,57 +65,61 @@ clean_pb_files() {
|
||||
fi
|
||||
}
|
||||
|
||||
list_protos() {
|
||||
local search_dir="$1" maxdepth="${2:-}"
|
||||
if [ -n "$maxdepth" ]; then
|
||||
find "${search_dir}" -maxdepth "${maxdepth}" -type f -name '*.proto' | sort
|
||||
else
|
||||
find "${search_dir}" -type f -name '*.proto' | sort
|
||||
fi
|
||||
}
|
||||
|
||||
cd "${API_DIR}"
|
||||
|
||||
# Messaging (top-level .proto files in ./proto)
|
||||
mapfile -t messaging_protos < <(find "${PROTO_DIR}" -maxdepth 1 -type f -name '*.proto' | sort)
|
||||
if [ "${#messaging_protos[@]}" -gt 0 ]; then
|
||||
messaging_files="$(list_protos "${PROTO_DIR}" 1)"
|
||||
if [ -n "${messaging_files}" ]; then
|
||||
info "Compiling messaging protos"
|
||||
rm -rf ./pkg/messaging/internal/generated
|
||||
generate_go "./pkg/messaging/internal/generated" "${messaging_protos[@]}"
|
||||
rm -rf ./pkg/generated/gmessaging ./pkg/messaging/internal/generated
|
||||
set -- $messaging_files
|
||||
generate_go "$@"
|
||||
fi
|
||||
|
||||
# Common shared
|
||||
mapfile -t common_protos < <(find "${PROTO_DIR}/common" -type f -name '*.proto' | sort)
|
||||
if [ "${#common_protos[@]}" -gt 0 ]; then
|
||||
common_files="$(list_protos "${PROTO_DIR}/common")"
|
||||
if [ -n "${common_files}" ]; then
|
||||
info "Compiling common shared protos"
|
||||
clean_pb_files "./pkg/proto"
|
||||
generate_go "./pkg/proto" "${common_protos[@]}"
|
||||
set -- $common_files
|
||||
generate_go "$@"
|
||||
fi
|
||||
|
||||
# Ledger
|
||||
if [ -f "${PROTO_DIR}/ledger/v1/ledger.proto" ]; then
|
||||
info "Compiling ledger protos"
|
||||
clean_pb_files "./pkg/proto/ledger"
|
||||
generate_go_with_grpc "./pkg/proto/ledger/v1" "${PROTO_DIR}/ledger/v1/ledger.proto"
|
||||
generate_go_with_grpc "${PROTO_DIR}/ledger/v1/ledger.proto"
|
||||
fi
|
||||
|
||||
# Oracle
|
||||
if [ -f "${PROTO_DIR}/oracle/v1/oracle.proto" ]; then
|
||||
info "Compiling oracle protos"
|
||||
clean_pb_files "./pkg/proto/oracle"
|
||||
generate_go_with_grpc "./pkg/proto/oracle/v1" "${PROTO_DIR}/oracle/v1/oracle.proto"
|
||||
generate_go_with_grpc "${PROTO_DIR}/oracle/v1/oracle.proto"
|
||||
fi
|
||||
|
||||
# Chain gateway
|
||||
if [ -f "${PROTO_DIR}/chain/gateway/v1/gateway.proto" ]; then
|
||||
info "Compiling chain gateway protos"
|
||||
clean_pb_files "./pkg/proto/chain/gateway"
|
||||
generate_go_with_grpc "./pkg/proto/chain/gateway/v1" "${PROTO_DIR}/chain/gateway/v1/gateway.proto"
|
||||
generate_go_with_grpc "${PROTO_DIR}/chain/gateway/v1/gateway.proto"
|
||||
fi
|
||||
|
||||
# Payments orchestrator
|
||||
if [ -f "${PROTO_DIR}/payments/orchestrator/v1/orchestrator.proto" ]; then
|
||||
info "Compiling payments orchestrator protos"
|
||||
clean_pb_files "./pkg/proto/payments/orchestrator"
|
||||
generate_go_with_grpc "./pkg/proto/payments/orchestrator/v1" "${PROTO_DIR}/payments/orchestrator/v1/orchestrator.proto"
|
||||
generate_go_with_grpc "${PROTO_DIR}/payments/orchestrator/v1/orchestrator.proto"
|
||||
fi
|
||||
|
||||
# Billing fees
|
||||
if [ -f "${PROTO_DIR}/billing/fees/v1/fees.proto" ]; then
|
||||
info "Compiling billing fees protos"
|
||||
clean_pb_files "./pkg/proto/billing/fees"
|
||||
generate_go_with_grpc "./pkg/proto/billing/fees/v1" "${PROTO_DIR}/billing/fees/v1/fees.proto"
|
||||
generate_go_with_grpc "${PROTO_DIR}/billing/fees/v1/fees.proto"
|
||||
fi
|
||||
|
||||
info "Protobuf generation completed"
|
||||
|
||||
Reference in New Issue
Block a user