uber/prototool
Your Swiss Army Knife for Protocol Buffers
20 Releases
Latest: 6y ago
v1.10.0Latest
📋 Changes
- Document all lint rules and their group memberships (#548)
- Add walk-timeout command line flag (#545)
- Fix directory structure example in Style Guide (#543)
- Add linter for ruby_package file option
- Update Prototool deps
- Update Prototool to go 1.14 and protoc 3.11.0
- Use a more stable build of Alpine as a base image
- Fix minor typos in style guide (#535)
- + 1 more
v1.9.0
📋 Changes
- Updated dependencies for Go 1.13
v1.8.0
📋 Changes
- Update the default `protoc` version to `3.8.0`.
- Parse updated `protoc` output for `3.8.0`.
- Fix issue where there were an unbounded number of `protoc` calls were being executed.
v1.7.0
📋 Changes
- Fix issue where `config init --document` produced an invalid YAML file.
- Dependency updates.
v1.6.0
📋 Changes
- Dynamically resolve `google.protobuf.Any` values for gRPC error details.
v1.5.0
📋 Changes
- Add linters for enum field and message field comments. These linters are not
- Add `--generate-ignores` flag to the `lint` command to print out the value
- Update the default version of `protoc` to `3.7.1`.
v1.4.0
📋 Changes
- Add concept of lint groups. The default lint group is named `uber1`. The lint
- New `uber2` lint group and associated V2 Style Guide representing the second
- New `google` lint group representing Google's minimal [Style Guide](https://developers.google.com/protocol-buffers/docs/style).
- Add `--list-lint-group` flag to the `lint` command to list a lint group's
- Add `--diff-lint-groups` flag to the `lint` command to print the diff
- Add `descriptor-set` command to output a merged `FileDescriptorSet`
- Add breaking change detector as the `break check` command. By default, this
- A Docker image is now provided on Docker Hub as [uber/prototool](https://hub.docker.com/r/uber/prototool)
- + 15 more
v1.3.0
✨ Added
- Accept `prototool.json` files for configuation in addition to
- `prototool.yaml` files.
- Add `--config-data` flag.
- Add `--protoc-bin-path` and `--protoc-wkt-path` flags to manually
- set the paths for where `protoc` is run and where the
- Well-Known Types are included from.
v1.2.0
✨ Added
- Add `json` flag to `all`, `compile`, `format`, `generate` and `lint` commands.
v1.1.0
📋 Changes
- Add support for Homebrew builds.
v1.0.0
Initial release.
v1.0.0-rc1Pre-release
🐛 Fixed
- Fixed regression where `prototool version` did not output 'Git commit' and
- 'Built'.
v0.7.1Pre-release
🐛 Fixed
- Fixed an issue where Golang `Mname=package` modifiers were being duplicated.
v0.7.0Pre-release
📋 Changed
- Move `protoc_includes` and `protoc_version` settings under `protoc` key.
- Move `allow_unused_imports` to `protoc.allow_unused_imports`.
- Move `protoc-url` global flag under the applicable commands: all,
- compile, format, gen, and lint.
- Rename `gen` to `generate`.
v0.6.0Pre-release
📋 Changed
- Delete the ability to explicitly specify multiple files, and have the effect
- of one file being specified be the same as the former `--dir-mode`. See
- [#16](https://github.com/uber/prototool/issues/16) for more details.
- Delete `protoc_include_wkt` setting. This is always set to true.
- Delete `no_default_excludes` setting. This is always set to true.
- Delete `gen.go_options.no_default_modifiers` setting.
- Delete `lint.group` setting.
- Delete `harbormaster` global flag.
- + 8 more
🐛 Fixed
- Fix `excludes` setting to correctly match file path prefixes.
v0.5.0Pre-release
✨ Added
- A linter to verify that no enum uses the option `allow_alias.`
- The `--protoc-url` flag can now handle references to local protoc zip files
- as well as normal http references by handling urls of the form
- `file:///path/to/protoc.zip`.
📋 Changed
- The formatter now prints primitive field options on the same line
- as the field.
- The commands `binary-to-json`, `clean`, `descriptor-proto`, `download`,
- `field-descriptor-proto`, `json-to-binary`, `list-all-linters`,
- `list-all-lint-groups`, `list-linters`, `list-lint-group`, and
- `service-descriptor-proto` are deleted to reduce the surface area
- for the v1.0 release.
- The commands `list-all-linters` and `list-linters` are now flags
- + 12 more
v0.4.0Pre-release
✨ Added
- A new command `prototool create` to auto-generate Protobuf files from a
- template. The generated files have the Protobuf package, `go_package`,
- `java_multiple_files`, `java_outer_classname`, and `java_package` values set
- depending on the location of your file and config settings. Make sure to
- update your Vim plugin setup as well if using the Vim integration. See the
- documentation for `prototool create` in the README.md for more details.
📋 Changed
- The values for `java_multiple_files`, `java_outer_classname`, and
- `java_package` that pass lint by default now reflect what is expected
- by the Google Cloud APIs file structure. See
- https://cloud.google.com/apis/design/file_structure for more details.
- `protobuf format` will now automatically update the value of `go_package`,
- `java_multiple_files`, `java_outer_classname`, and `java_package` to match
- what is expected in the default Style Guide. This functionality can be
- suppressed with the flag `--no-rewrite`. See the documentation for
- + 5 more
v0.3.0Pre-release
✨ Added
- Linters to verify that `java_multiple_files` and `java_outer_classname` are
- unset.
🐛 Fixed
- The formatting order now reflects
- https://cloud.google.com/apis/design/file_structure by moving the location
- of imports to be below syntax, package, and file options.
- Temporary files used for `FileDescriptorSets` are now properly cleaned up.
- Packages that begin with a keyword no longer produce an error when using
- `prototool format` or `prototool lint`.
v0.2.0Pre-release
✨ Added
- A default lint rule to verify that a package is always declared.
- A lint group `all` that contains all the lint rules, not just the default
- lint rules.
- A flag `--harbormaster` that will print failures in JSON that is compatible
- with the Harbormaster API.
🐛 Fixed
- `prototool init` will return an error if there is an existing prototool.yaml
- file instead of overwriting it.
- Nested options are now properly printed out from `prototool format`.
- Repeated options are now properly printed out from `prototool format`.
- Weak and public imports are now properly printed out from `prototool format`.
- Option keys with empty values are no longer printed out
- from `prototool format`.
v0.1.0Pre-release
Initial release.