#!/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