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 beenums
,messages
,rpc
methods andservices
. - 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
-select
options
an illustration of effects of different using https://github.com/googleapis/googleapis/blob/master/google/privacy/dlp/v2/dlp.proto
as the source
-select
not using everything declared in the root .proto
file and all the imports
will be produced:
-select *
using only elements declared in the root .proto
file and their dependencies will be produced:
-select imports
using only imports
dependency graph will be produced:
-select .ListDlpJobs
using 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:
-select .AnalyzeDataSourceRiskDetails
using same as above, but instead of rpc
method, name of the message
was specified:
.svg
and/or .png
images from produced .dot
file
how to (automatically) generate - install
graphviz
(see https://graphviz.gitlab.io/download/ for the instructions) - specify the location of the
dot
utility (which is a part ofgraphviz)
in your version of configuration file, e.g.
{
"locations": {
"graphviz": "/path/to/dot",
- set approptiate
options
in your version of configuration file, e.g.
{
"options" : {
"generate .png file": false,
"generate .svg file": true,