72 lines
2.6 KiB
Bash
72 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# ─────────────────────────────────────────────────────────
|
|
# Скрипт генерации кода из proto файлов.
|
|
# Запускай после каждого изменения .proto файлов.
|
|
#
|
|
# Требования:
|
|
# - buf (https://buf.build/docs/installation)
|
|
# npm install -g @bufbuild/buf
|
|
# ИЛИ
|
|
# - protoc + плагины (см. ниже)
|
|
# ─────────────────────────────────────────────────────────
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
PROTO_DIR="$SCRIPT_DIR/proto"
|
|
|
|
echo "=== Generating code from proto files ==="
|
|
|
|
# ─── Вариант 1: Через Buf (рекомендуется) ────────────────
|
|
if command -v buf &> /dev/null; then
|
|
echo "Using buf..."
|
|
cd "$PROTO_DIR"
|
|
buf dep update
|
|
buf generate
|
|
echo "Done! Generated Go and Dart code."
|
|
exit 0
|
|
fi
|
|
|
|
# ─── Вариант 2: Через protoc напрямую ────────────────────
|
|
if command -v protoc &> /dev/null; then
|
|
echo "Using protoc..."
|
|
|
|
# Проверяем плагины
|
|
for plugin in protoc-gen-go protoc-gen-go-grpc protoc-gen-dart; do
|
|
if ! command -v $plugin &> /dev/null; then
|
|
echo "ERROR: $plugin not found. Install it:"
|
|
echo " Go plugins: go install google.golang.org/protobuf/cmd/protoc-gen-go@latest"
|
|
echo " go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest"
|
|
echo " Dart plugin: dart pub global activate protoc_plugin"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# Генерация Go
|
|
protoc \
|
|
--proto_path="$PROTO_DIR" \
|
|
--go_out="$SCRIPT_DIR/backend/gen" \
|
|
--go_opt=paths=source_relative \
|
|
--go-grpc_out="$SCRIPT_DIR/backend/gen" \
|
|
--go-grpc_opt=paths=source_relative \
|
|
"$PROTO_DIR/notes/v1/notes.proto"
|
|
|
|
# Генерация Dart
|
|
protoc \
|
|
--proto_path="$PROTO_DIR" \
|
|
--dart_out=grpc:"$SCRIPT_DIR/frontend/lib/gen" \
|
|
"$PROTO_DIR/notes/v1/notes.proto"
|
|
|
|
echo "Done! Generated Go and Dart code."
|
|
exit 0
|
|
fi
|
|
|
|
echo "ERROR: Neither buf nor protoc found."
|
|
echo ""
|
|
echo "Install buf (recommended):"
|
|
echo " npm install -g @bufbuild/buf"
|
|
echo ""
|
|
echo "Or install protoc:"
|
|
echo " https://github.com/protocolbuffers/protobuf/releases"
|
|
exit 1
|