raku-protobuf
Parse and manage Protobufs with Raku
Description
This package contains utilities for managing protobufs with Raku.
Current contents:
- Protobuf::Grammar -- parse a protobuf file
- Protobuf::Actions -- generate a representation from a grammar
- Protobuf -- provides
parse-proto
for combining the above - protoc.raku -- cli to parse a proto from the command line
There are a few other little classes like Protobuf::Definition, Protobuf::Service, etc which comprise the structure that is built by Protobuf::Actions.
SYNOPSIS
use Protobuf;
my $p = parse-proto("my.proto".IO.slurp);
# returns a Protobuf::Definition
for $p.services -> $svc {
# each one is a Protobuf::Service
say "service name: " ~ $svc.name;
for $svc.endpoints -> $e {
# each one is a Protobuf::Endpoint
say " endpoint: " ~ $e.name;
say ' request params: ' ~ $e.request.name;
# Requests and responses are Protobuf::Message's
for $e.request.fields -> $f {
# These are Protobuf::Field's
say ' name : ' ~ $f.name;
# Note that type can be a string or a Protobuf::Message
say ' type : ' ~ $f.type;
}
say ' response params: ' ~ $e.response.name;
for $e.response.fields -> $f {
say ' name : ' ~ $f.name;
say ' type : ' ~ $f.type;
}
}
}
AUTHOR
Brian Duggan
TODO
- Generate code from a proto
- A bunch of details in the grammar
SEE ALSO
https://developers.google.com/protocol-buffers/docs/reference/proto3-spec