All Projects → seamia → Protodot

seamia / Protodot

Licence: bsd-3-clause
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)

Programming Languages

go
31211 projects - #10 most used programming language
golang
3204 projects

Projects that are alternatives of or similar to Protodot

Buf
A new way of working with Protocol Buffers.
Stars: ✭ 3,328 (+3010.28%)
Mutual labels:  grpc, protocol-buffers, protoc, protobuf
Protolock
Protocol Buffer companion tool. Track your .proto files and prevent changes to messages and services which impact API compatibility.
Stars: ✭ 394 (+268.22%)
Mutual labels:  cli, protobuf, protocol-buffers, protoc
Rules protobuf
Bazel rules for building protocol buffers and gRPC services (java, c++, go, ...)
Stars: ✭ 206 (+92.52%)
Mutual labels:  grpc, protobuf, protocol-buffers, protoc
Prototool
Your Swiss Army Knife for Protocol Buffers
Stars: ✭ 4,932 (+4509.35%)
Mutual labels:  grpc, protobuf, protocol-buffers, protoc
protopatch
protoc-gen-go patch utility
Stars: ✭ 58 (-45.79%)
Mutual labels:  protobuf, protocol-buffers, protoc
protocell
Conjures up convenient OCaml types and serialization functions based on protobuf definition files
Stars: ✭ 18 (-83.18%)
Mutual labels:  protobuf, protocol-buffers, protoc
Protobuf
Protocol Buffers - Google's data interchange format
Stars: ✭ 52,305 (+48783.18%)
Mutual labels:  protobuf, protocol-buffers, protoc
Kroto Plus
gRPC Kotlin Coroutines, Protobuf DSL, Scripting for Protoc
Stars: ✭ 400 (+273.83%)
Mutual labels:  grpc, protobuf, protocol-buffers
Protobuf
A pure Elixir implementation of Google Protobuf
Stars: ✭ 442 (+313.08%)
Mutual labels:  protobuf, protocol-buffers, protoc
Protobuf
[Looking for new ownership] Protocol Buffers for Go with Gadgets
Stars: ✭ 4,998 (+4571.03%)
Mutual labels:  grpc, protobuf, protocol-buffers
Svgexport
SVG to PNG/JPEG command-line tool and Node.js module
Stars: ✭ 731 (+583.18%)
Mutual labels:  cli, svg, png
protobuf-d
Protocol Buffers Compiler Plugin and Support Library for D
Stars: ✭ 32 (-70.09%)
Mutual labels:  protobuf, protocol-buffers, protoc
grpc-chat
Simple Chat Server/Client implemented with gRPC
Stars: ✭ 107 (+0%)
Mutual labels:  protobuf, protocol-buffers, grpc
docker-protobuf
An all-inclusive protoc Docker image
Stars: ✭ 105 (-1.87%)
Mutual labels:  protobuf, grpc, protoc
agentgo
Hi! Agentgo is a tool for making remote command executions from server to client with golang, protocol buffers (protobuf) and grpc.
Stars: ✭ 15 (-85.98%)
Mutual labels:  protobuf, protocol-buffers, grpc
protoc-plugin
A protoc compiler plugin for Clojure applications
Stars: ✭ 28 (-73.83%)
Mutual labels:  protobuf, protocol-buffers, grpc
Protoreflect
Reflection (Rich Descriptors) for Go Protocol Buffers
Stars: ✭ 651 (+508.41%)
Mutual labels:  grpc, protobuf, protocol-buffers
Protobuf Swift
Google ProtocolBuffers for Apple Swift
Stars: ✭ 925 (+764.49%)
Mutual labels:  protobuf, protocol-buffers, protoc
makego
Makefile setup for our Golang projects.
Stars: ✭ 65 (-39.25%)
Mutual labels:  protobuf, protocol-buffers, protoc
Protoc Gen Struct Transformer
Transformation functions generator for Protocol Buffers.
Stars: ✭ 105 (-1.87%)
Mutual labels:  grpc, protobuf, protocol-buffers

protodot

transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)

data pipeline

installation

you can download the sources (from this page) and build protodot yourself, or you can download pre-built binaries for a few selected environments (or from here):

protodot output is highly customizable through its configuration file and a set of templates files. if you installed protodot from the binary distribution - you may want to extract aforementioned files by running:

   ./protodot -install

command line arguments

  • -src what.proto - location and name of the source file, required
  • -config config.json - location and name of the configuration file, optional
  • -select .one.two;three.four - name(s) of the selected elements to show, optional, explained later in this document
  • -output save-it-here - name of the output file, optional
  • -inc /abc/def;/xyz - (semicolon separated) list of the include directories, optional

configuration file

tbd

selected output

sometimes the resulting diagram can be overwhelming. you have an option to limit the output to the elements that interest you the most, hence -select args command line option. so far, args in -select args can take one of the three available forms:

  • list of the elements (and their dependencies) that you want to see included (separated by ;). the elements can be enums, messages, rpc methods and services.
  • if you specify * as an argument - this will result in the inclusion of the elements declared in the main .proto file (specified in -src argument) and their dependencies. in other words: all the unused elements declared in all the included .proto files will not be shown.
  • if you specify imports as an argument - protodot will generate import dependency graph (see an example below)

an example of output

an illustration of effects of different -select options

using https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto as the source

not using -select

everything declared in the root .proto file and all the imports will be produced:

using -select *

only elements declared in the root .proto file and their dependencies will be produced:

using -select imports

only imports dependency graph will be produced:

using -select .ListDlpJobs

in this particular case, the name of the rpc method was specified: this will result in production of the requested rpc method, it's encompasing service element and all the dependencied of the method:

using -select .AnalyzeDataSourceRiskDetails

same as above, but instead of rpc method, name of the message was specified:

how to (automatically) generate .svg and/or .png images from produced .dot file

  1. install graphviz (see https://graphviz.gitlab.io/download/ for the instructions)
  2. specify the location of the dot utility (which is a part of graphviz) in your version of configuration file, e.g.
{
	"locations": {
		"graphviz":	"/path/to/dot",
  1. set approptiate options in your version of configuration file, e.g.
{
	"options" : {
		"generate .png file":		false,
		"generate .svg file":		true,

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].