alt/bin/contracts-gen
toki 88c673d973 feat: contract codegen baseline - add proto code generation for client and server
- Add proto files for backtest and market domains
- Generate Go code in packages/contracts/gen/go
- Generate Dart code in apps/client/lib/src/generated
- Add contracts-gen and contracts-check binaries
- Update pubspec.yaml with protoc dependencies
- Update go.work with new module
2026-05-28 05:29:03 +09:00

50 lines
1,002 B
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"
)
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[@]}"
)