2017-01-22 13 views
1

Я прототипирую мета-модель поверх прото3. Чтобы сгенерировать доменную спецификацию, поскольку синтаксис расширения go proto3 является смехотворно выразительным. Мои протонные файлы домена зависят от meta.proto, которые содержат расширения.proto3 -> идти с пользовательскими расширениями, приводящими к импорту в пакет («google/protobuf») в коде go

Я могу скомпилировать их. При включении файла meta.proto сгенерированных идти заканчивается следующим включает блок:

import proto "github.com/golang/protobuf/proto" 
import fmt "fmt" 
import math "math" 
import google_protobuf "google/protobuf" <--- this import does not exist !! 

Моего расширение файл имеет следующую структуру (based off this):

syntax = "proto2"; 
package "..."; 

option go_package = "..."; 

import "google/protobuf/descriptor.proto"; <--- this causes the import 

// message MyExtensionClass ... 
// message MyExtensionField ... 

extend google.protobuf.MessageOptions { 
    optional MyExtensionClass class = 50000; 
} 

extend google.protobuf.FieldOptions { 
    optional MyExtensionField field = 50001; 
} 

Я знаю, что решение, вероятно, очень простое, google/protobuf include предназначен для генерации C++.


В моем рабочем пространстве включенный пакет должен быть "github.com/golang/protobuf/protoc-gen-go/descriptor"

+0

Импорт 'descriptor.proto' необходим при объявлении пользовательских опций - это не только для генерации кода на C++. Однако я ничего не знаю о Go. –

ответ

1

Плохое решение мужчин. Не идеально, направляя его на соответствующие импортные работы:

sed -i '' -e 's/import google_protobuf \"google\/protobuf\"/import google_protobuf \"github.com\/golang\/protobuf\/protoc-gen-go\/descriptor\"/g' pkg/domain/proto/extensions/*.pb.go 

 Смежные вопросы

  • Нет связанных вопросов^_^