#!/usr/bin/env bash set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" require_binary() { local binary="$1" local hint="$2" if ! command -v "$binary" >/dev/null 2>&1; then echo "Missing required binary: $binary" >&2 echo "$hint" >&2 exit 1 fi } require_binary protoc "Install Protocol Buffers compiler and ensure protoc is on PATH." require_binary protoc-gen-dart "Install Dart plugin: dart pub global activate protoc_plugin, then add pub-cache/bin to PATH." require_binary protoc-gen-go "Install Go plugin: go install google.golang.org/protobuf/cmd/protoc-gen-go@latest, then add GOPATH/bin to PATH." ( protoc \ --proto_path="$repo_root/proto" \ --dart_out="$repo_root/dart/lib/src/packets" \ message_common.proto ) ( cd "$repo_root/go" protoc --go_out=. --go_opt=paths=source_relative packets/message_common.proto ) ( cd "$repo_root/python" protoc --python_out=. --pyi_out=. proto_socket/packets/message_common.proto ) "$repo_root/tools/check_proto_sync.sh"