Awesome! This thread is full of gems after the few days of me banging my head :) How complete would you say protopoet is? Have you used it to generate proto files anywhere?
On Fri, 21 Feb 2020 at 19:06 Derek Perez <[email protected]> wrote: > 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/CAOfK4wVJWcbnCCRzQMfmy9FSKeJY-V77KV2XFhuyaUMWhpVvTg%40mail.gmail.com.
