56 lines
1.8 KiB
Bash
Executable file
56 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
dart_proto="$repo_root/dart/lib/src/packets/message_common.proto"
|
|
go_proto="$repo_root/go/packets/message_common.proto"
|
|
kotlin_proto="$repo_root/kotlin/src/main/proto/message_common.proto"
|
|
|
|
if [[ ! -f "$dart_proto" ]]; then
|
|
echo "Missing canonical Dart proto: $dart_proto" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ ! -f "$go_proto" ]]; then
|
|
echo "Missing Go proto copy: $go_proto" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "$repo_root/kotlin" && ! -f "$kotlin_proto" ]]; then
|
|
echo "Missing Kotlin proto copy: $kotlin_proto" >&2
|
|
exit 1
|
|
fi
|
|
|
|
tmp_dir="$(mktemp -d)"
|
|
trap 'rm -rf "$tmp_dir"' EXIT
|
|
|
|
normalize_proto() {
|
|
awk '
|
|
/^[[:space:]]*option go_package[[:space:]]*=.*;[[:space:]]*$/ { next }
|
|
/^[[:space:]]*option java_package[[:space:]]*=.*;[[:space:]]*$/ { next }
|
|
/^[[:space:]]*option java_outer_classname[[:space:]]*=.*;[[:space:]]*$/ { next }
|
|
/^[[:space:]]*option java_multiple_files[[:space:]]*=.*;[[:space:]]*$/ { next }
|
|
/^[[:space:]]*$/ { next }
|
|
{ print }
|
|
' "$1"
|
|
}
|
|
|
|
normalize_proto "$dart_proto" >"$tmp_dir/dart.proto"
|
|
normalize_proto "$go_proto" >"$tmp_dir/go.proto"
|
|
if [[ -f "$kotlin_proto" ]]; then
|
|
normalize_proto "$kotlin_proto" >"$tmp_dir/kotlin.proto"
|
|
fi
|
|
|
|
if ! cmp -s "$tmp_dir/dart.proto" "$tmp_dir/go.proto"; then
|
|
echo "Proto schema mismatch: go/packets/message_common.proto must match the Dart canonical proto except option go_package." >&2
|
|
diff -u "$tmp_dir/dart.proto" "$tmp_dir/go.proto" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f "$tmp_dir/kotlin.proto" ]] && ! cmp -s "$tmp_dir/dart.proto" "$tmp_dir/kotlin.proto"; then
|
|
echo "Proto schema mismatch: kotlin/src/main/proto/message_common.proto must match the Dart canonical proto except Java options." >&2
|
|
diff -u "$tmp_dir/dart.proto" "$tmp_dir/kotlin.proto" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Proto schemas are in sync."
|