Actually your question triggered something I wanted todo for a long time. You could join the discussion on this thread: https://groups.google.com/forum/#!topic/protobuf/NrhCXiXIfxk
_/ _/ Alex Van Boxel On Fri, Feb 21, 2020 at 1:23 PM ittai zeidman <[email protected]> wrote: > Nice! Thanks :) > I’ll try it out and report back... > > On Fri, 21 Feb 2020 at 14:06 Alex Van Boxel <[email protected]> wrote: > >> You can use this class from the metastore. A lot of work has pored into >> this class. The plan is to actually donate this to the proto-java >> implementation if it has been battle tested. >> >> >> https://github.com/anemos-io/metastore/blob/master/putils/src/main/java/io/anemos/metastore/putils/ProtoLanguageFileWriter.java >> >> It currently only support proto3. >> >> _/ >> _/ Alex Van Boxel >> >> >> On Fri, Feb 21, 2020 at 11:02 AM Nadav Samet <[email protected]> wrote: >> >>> Hi Ittai, >>> >>> It sounds like you are expecting your plugin to emit proto files in text >>> format. Your code is assigning binary data into the file's content, and >>> what protoc does is just writing it to the files it creates. There's >>> nothing that would automatically detect that you are passing a >>> DescriptorProto and would transform that into text representation. If you >>> want the output to be in text format you need to manually create a string >>> with the file content you want. >>> >>> >>> On Fri, Feb 21, 2020 at 11:40 AM ittai zeidman <[email protected]> wrote: >>> >>>> Hi, >>>> I have proto files which contain valid proto messages and services and my >>>> own DSL which I want to transpile into proto messages and services. >>>> My idea is to invoke protoc and have it process "my proto" with a protoc >>>> plugin that will emmit "standard proto" (which I'll later feed into protoc >>>> again). >>>> The reason I'm going through the intermediate proto files is because we >>>> need them to integrate with other systems. >>>> >>>> I'm trying to write this plugin using protobuf-java (jvm developer) but >>>> the proto file that is emitted is incorrect. >>>> >>>> I think (and hope) I'm doing something stupid and maybe someone here can >>>> point me to the right direction. >>>> >>>> >>>> Thanks in advance... >>>> >>>> >>>> Some of my code (to generate a hardcoded proto file with one message >>>> and one field): >>>> >>>> DescriptorProtos.DescriptorProto protoMessage = >>>> DescriptorProtos.DescriptorProto.newBuilder() >>>> .setName("messageGreeting") >>>> .addField(DescriptorProtos.FieldDescriptorProto.newBuilder() >>>> .setName("greeting") >>>> .setType(FieldDescriptorProto.Type.TYPE_STRING) >>>> .setNumber(0) >>>> .setDefaultValue("hi") >>>> .build() >>>> ) >>>> .build(); >>>> DescriptorProtos.FileDescriptorProto proto = >>>> DescriptorProtos.FileDescriptorProto.newBuilder() >>>> .addMessageType( >>>> protoMessage >>>> ) >>>> .build(); >>>> ByteArrayOutputStream byteArrayOutputStream = new >>>> ByteArrayOutputStream(); >>>> >>>> proto.writeTo(byteArrayOutputStream); // should be lazy? >>>> >>>> CodeGeneratorResponse.File file = >>>> CodeGeneratorResponse.File.newBuilder() >>>> .setName("yo.proto") >>>> >>>> .setContentBytes(ByteString.copyFrom(byteArrayOutputStream.toByteArray)) >>>> >>>> // I also tried: >>>> >>>> // .mergeFrom(protoMessage) >>>> // .setContent(byteArrayOutputStream.toString) // should be lazy? >>>> // .mergeFrom(byteArrayOutputStream.toByteArray) >>>> .build(); >>>> file.toByteArray >>>> >>>> >>>> Unfortunately what I get is: >>>> >>>> cat yo.proto: >>>> "% >>>> messageGreeting >>>> >>>> >>>> greeting( :hi% >>>> >>>> and in a text editor: >>>> 2225 0a0f 6d65 7373 6167 6547 7265 6574 >>>> 696e 6712 120a 0867 7265 6574 696e 6718 >>>> 0028 093a 0268 69 >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Protocol Buffers" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/protobuf/03f1f05d-a9ef-4490-bf6a-469f16212f9f%40googlegroups.com >>>> <https://groups.google.com/d/msgid/protobuf/03f1f05d-a9ef-4490-bf6a-469f16212f9f%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> >>> >>> -- >>> -Nadav >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Protocol Buffers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/protobuf/CANZcNEryh5FBtZQ%3D4_EZuy5N21JeMxJ6NTjhR2T68DM5s9OWtw%40mail.gmail.com >>> <https://groups.google.com/d/msgid/protobuf/CANZcNEryh5FBtZQ%3D4_EZuy5N21JeMxJ6NTjhR2T68DM5s9OWtw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > You received this message because you are subscribed to the Google Groups > "Protocol Buffers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/protobuf/CAOfK4wVpcbhpsN4eDmfprt4w-cB251mhXcrWp5hid%2B%3DXqtbFDw%40mail.gmail.com > <https://groups.google.com/d/msgid/protobuf/CAOfK4wVpcbhpsN4eDmfprt4w-cB251mhXcrWp5hid%2B%3DXqtbFDw%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/CALCMnttH1%2BUgAkuwWiiFX0bCMD3jUOw32%3DECjWXG%3DR_pVF_Q_A%40mail.gmail.com.
