File size: 1,971 Bytes
6ed9a00 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | #!/usr/bin/env bash
# ============================================================================
# Rhodawk AI — Local gRPC Stub Generator
# ----------------------------------------------------------------------------
# Resolves W-001 (CRITICAL): the openclaude_grpc/openclaude_pb2.py and
# openclaude_grpc/openclaude_pb2_grpc.py files are NOT committed to source
# (they are generated at Docker build time). This script generates them
# locally so app.py can be imported and run without a full Docker build.
#
# Usage:
# bash scripts/generate_stubs.sh
#
# Requirements:
# pip install grpcio-tools
# ============================================================================
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PROTO_DIR="${REPO_ROOT}/vendor/openclaude/src/proto"
OUT_DIR="${REPO_ROOT}/openclaude_grpc"
if [ ! -f "${PROTO_DIR}/openclaude.proto" ]; then
echo "[generate_stubs] ERROR: ${PROTO_DIR}/openclaude.proto not found." >&2
echo "[generate_stubs] The vendor/openclaude submodule may be missing." >&2
exit 1
fi
if ! python -c "import grpc_tools" 2>/dev/null; then
echo "[generate_stubs] ERROR: grpcio-tools not installed." >&2
echo "[generate_stubs] Run: pip install grpcio-tools" >&2
exit 1
fi
mkdir -p "${OUT_DIR}"
echo "[generate_stubs] Generating Python gRPC stubs..."
python -m grpc_tools.protoc \
-I "${PROTO_DIR}" \
--python_out="${OUT_DIR}" \
--grpc_python_out="${OUT_DIR}" \
"${PROTO_DIR}/openclaude.proto"
# Patch the generated _grpc.py to use a relative import so it works as a
# package module (the protoc default emits an absolute import).
GRPC_FILE="${OUT_DIR}/openclaude_pb2_grpc.py"
if [ -f "${GRPC_FILE}" ]; then
sed -i.bak 's/^import openclaude_pb2 as openclaude__pb2$/from . import openclaude_pb2 as openclaude__pb2/' "${GRPC_FILE}"
rm -f "${GRPC_FILE}.bak"
fi
echo "[generate_stubs] Done. Generated:"
ls -la "${OUT_DIR}"/openclaude_pb2*.py
|