I wrote a library for doing this: https://github.com/perezd/protopoet
On Fri, Feb 21, 2020, 5:57 AM Alex Van Boxel <[email protected]> wrote: > Congratulations, cool to see other people using it ;-) > > Indeed, I rather have it part protobuf-java before haven maven-artifact. > You can fill issues on the metastore repo, it's not abandoned. It's > activity developed (I'll copy issues over when a move is ever node. > > _/ > _/ Alex Van Boxel > > > On Fri, Feb 21, 2020 at 2:54 PM ittai zeidman <[email protected]> wrote: > >> Good news! >> I was able to get this out: >> syntax = "proto3"; >> message messageGreeting { >> string greeting = 1; >> } >> Thanks! >> I'll report more after I'll have more time to test out the corner cases >> and richness. >> If I find issues would you rather we continue here, github issue, >> somewhere else? >> Also I was unable to find this artifact on maven central or jcenter >> <https://bintray.com/search?query=io.anemos>. I copied the files for the >> meantime but I'd rather add a dependency and not fork the code. >> >> On Fri, Feb 21, 2020 at 2:43 PM Alex Van Boxel <[email protected]> wrote: >> >>> 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/CAOfK4wUveFVMubfbRTq3cDgaswG5qeS5mvsPHoXGRPeYSxe%2BrQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/protobuf/CAOfK4wUveFVMubfbRTq3cDgaswG5qeS5mvsPHoXGRPeYSxe%2BrQ%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/CALCMntvLHG6ArsMRfe0fGj3t08qwRtTRe-qCZ31yPxGQj6qRNw%40mail.gmail.com > <https://groups.google.com/d/msgid/protobuf/CALCMntvLHG6ArsMRfe0fGj3t08qwRtTRe-qCZ31yPxGQj6qRNw%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/CAD7-yfuwG3KjB%3DFCpzsQ7_a84pcf4T7SOsURwFW4HfqUazSK1Q%40mail.gmail.com.
