Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/seamia/protodot
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
https://github.com/seamia/protodot
cli dependency-graph dot go golang graph graphviz graphviz-dot-language grpc png portable-network-graphics proto3 protobuf protoc protocol-buffers scalable-vector-graphics svg visualization
Last synced: 6 days ago
JSON representation
transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed)
- Host: GitHub
- URL: https://github.com/seamia/protodot
- Owner: seamia
- License: bsd-3-clause
- Created: 2018-09-19T17:17:26.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-21T20:52:56.000Z (about 1 year ago)
- Last Synced: 2024-12-29T23:35:57.114Z (13 days ago)
- Topics: cli, dependency-graph, dot, go, golang, graph, graphviz, graphviz-dot-language, grpc, png, portable-network-graphics, proto3, protobuf, protoc, protocol-buffers, scalable-vector-graphics, svg, visualization
- Language: Go
- Homepage:
- Size: 47.2 MB
- Stars: 428
- Watchers: 9
- Forks: 42
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Support: support.go
Awesome Lists containing this project
- awesome-repositories - seamia/protodot - transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed) (Go)
- awesome-starred - seamia/protodot - transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed) (cli)
- awesome-grpc - protodot - Transforming your .proto files into .dot files (and .svg, .png if you happen to have graphviz installed) (Tools / CLI)
README
# protodot
transforming your `.proto` files into `.dot` files (and `.svg`, `.png` if you happen to have `graphviz` installed)## online demo
you can find an online demo of this tool [here](https://protodot.seamia.net)## 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](https://github.com/seamia/protodot/tree/master/binaries)):* Darwin ([x86](https://protodot.seamia.net/binaries/darwin), [arm](https://protodot.seamia.net/binaries/darwin.arm))
* [Linux](https://protodot.seamia.net/binaries/linux)
* [Wasm](https://protodot.seamia.net/binaries/wasm)
* [Windows](https://protodot.seamia.net/binaries/windows)`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",
```
3. set approptiate `options` in your version of configuration file, e.g.
```
{
"options" : {
"generate .png file": false,
"generate .svg file": true,```