Paper trading readiness에서 API/worker/CLI가 같은 protobuf 계약으로 paper state를 시작하고 조회할 수 있어야 한다. Headless 운영 경로를 먼저 닫기 위해 contract, worker runtime, API forwarding, CLI scenario, client parser map과 검증 artifact를 함께 반영한다.
51 lines
1 KiB
Bash
Executable file
51 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
proto_root="$root/packages/contracts/proto"
|
|
go_out="$root/packages/contracts/gen/go"
|
|
dart_out="$root/apps/client/lib/src/generated"
|
|
dart_plugin="$root/apps/client/tool/protoc-gen-dart"
|
|
|
|
require_cmd() {
|
|
if ! command -v "$1" >/dev/null 2>&1; then
|
|
echo "contracts-gen: required command not found: $1" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
require_cmd protoc
|
|
require_cmd protoc-gen-go
|
|
|
|
if [ ! -x "$dart_plugin" ]; then
|
|
echo "contracts-gen: dart protoc plugin wrapper missing or not executable: $dart_plugin" >&2
|
|
exit 1
|
|
fi
|
|
|
|
protos=(
|
|
"alt/v1/common.proto"
|
|
"alt/v1/market.proto"
|
|
"alt/v1/backtest.proto"
|
|
"alt/v1/paper_trading.proto"
|
|
)
|
|
|
|
mkdir -p "$go_out"
|
|
mkdir -p "$dart_out"
|
|
|
|
(
|
|
cd "$proto_root"
|
|
protoc \
|
|
-I . \
|
|
--go_out="$go_out" \
|
|
--go_opt=paths=source_relative \
|
|
"${protos[@]}"
|
|
)
|
|
|
|
(
|
|
cd "$proto_root"
|
|
protoc \
|
|
-I . \
|
|
--plugin=protoc-gen-dart="$dart_plugin" \
|
|
--dart_out="$dart_out" \
|
|
"${protos[@]}"
|
|
)
|