All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- No changes yet.
1.10.0 - 2020-05-19
- 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)
- Added a regex check for a release candidate syntax in the protobuf version. If it exists, remove the hyphen for the version portion of the URL (#515)
1.9.0 - 2019-10-12
- Updated dependencies for Go 1.13
1.8.0 - 2019-06-10
- Update the default
protocversion to3.8.0. - Parse updated
protocoutput for3.8.0. - Fix issue where there were an unbounded number of
protoccalls were being executed.
1.7.0 - 2019-05-02
- Fix issue where
config init --documentproduced an invalid YAML file. - Dependency updates.
1.6.0 - 2019-04-05
- Dynamically resolve
google.protobuf.Anyvalues for gRPC error details.
1.5.0 - 2019-04-03
- Add linters for enum field and message field comments. These linters are not part of any lint group but can be manually added in a configuration file.
- Add
--generate-ignoresflag to thelintcommand to print out the value forlint.ignoresthat will allowlintto pass. This is useful when migrating to a set of lint rules, usually a lint group. - Update the default version of
protocto3.7.1.
1.4.0 - 2019-03-19
- Add concept of lint groups. The default lint group is named
uber1. The lint group can be specified with thelint.groupoption. - New
uber2lint group and associated V2 Style Guide representing the second version of our lint rules. These rules are almost entirely a superset of the V1 Style guide lint rules. Iflint.groupis set touber2, this also will affect thecreateandformatcommands, as theuber2lint group adds more file options to more closely match the Google Cloud APIs File Structure and changes the value ofgo_packageto take versions into account. In total, 39 lint rules have been added as compared to theuber1lint group. - New
googlelint group representing Google's minimal Style Guide. - Add
--list-lint-groupflag to thelintcommand to list a lint group's rules. - Add
--diff-lint-groupsflag to thelintcommand to print the diff between two lint groups. - Add
descriptor-setcommand to output a mergedFileDescriptorSetwith all files compiled to either stdout, a given file, or a temporary file. Useful with external tools that use FileDescriptorSets, and also useful for inspection if the--jsonflag is given. - Add breaking change detector as the
break checkcommand. By default, this compiles your existing Protobuf definitions, and then does a shallow clone of your git repository against the default branch and compiles the definitions on that branch, and compares the existing versus the branch. The branch can be controlled with the--git-branchflag, and one can use aFileDescriptorSetinstead of a shallow clone by generating a file withbreak descriptor-setand then passing the path to this file tobreak checkwith the--descriptor-set-pathflag. - A Docker image is now provided on Docker Hub as uber/prototool which provides an environment with commonly-used plugins.
- Switch to Golang Modules for dependency management.
- Add Bazel build files and
bazel/deps.bzlto allow Prototool to be easily built within a Bazel workspace. - Add
lint.file_headeroption to allow a file header to be specified. This affectslint,format, andcreate. - Allow
generate.plugins.pathto be relative. If a relative path is given, Prototool will search yourPATHfor the specified executable. - Add
generate.plugins.file_suffixoption that allows for JAR generation with the built-injavaplugin, andFileDescriptorSetgeneration with the built-indescriptor_setplugin. - Add
generate.plugins.include_importsandgenerate.plugins.include_source_infoto be used with the built-indescriptor_setplugin. - Add
cachetop-level command to allow management of theprotoccache. - Add
xtop-level command for experimental functionality. - Add
inspectcommand underxwith Protobuf inspection capabilities. - Add
--error-formatflag to allow specific error fields to be printed. - Allow the
protocbinary and WKT paths to be controlled by the environment variablesPROTOTOOL_PROTOC_BIN_PATHandPROTOTOOL_PROTOC_WKT_PATHin addition to the existing--protoc-bin-pathand--protoc-wkt-pathflags. The flags take precedence. This is especially useful for Docker images. - Add file locking around the
protocdownloader to eliminate concurrency issues where multipleprototoolinvocations may be accessing the cache at the same time. - Add TLS support to the
grpccommand. - Add
--detailsflag to thegrpccommand to output headers, trailers, and statuses as well as the responses. - Unix domain sockets can now be specified for the
--addressflag of thegrpccommand via the prefixunix://.
1.3.0 - 2018-09-17
- Accept
prototool.jsonfiles for configuation in addition toprototool.yamlfiles. - Add
--config-dataflag. - Add
--protoc-bin-pathand--protoc-wkt-pathflags to manually set the paths for whereprotocis run and where the Well-Known Types are included from.
1.2.0 - 2018-08-29
- Add
jsonflag toall,compile,format,generateandlintcommands.
1.1.0 - 2018-08-24
- Add support for Homebrew builds.
1.0.0 - 2018-08-23
- Initial release.
1.0.0-rc1 2018-08-16
- Fixed regression where
prototool versiondid not output 'Git commit' and 'Built'.
0.7.1 2018-08-15
- Fixed an issue where Golang
Mname=packagemodifiers were being duplicated.
0.7.0 - 2018-08-09
- Move
protoc_includesandprotoc_versionsettings underprotockey. - Move
allow_unused_importstoprotoc.allow_unused_imports. - Move
protoc-urlglobal flag under the applicable commands: all, compile, format, gen, and lint. - Rename
gentogenerate.
0.6.0 - 2018-08-03
- 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 for more details. - Delete
protoc_include_wktsetting. This is always set to true. - Delete
no_default_excludessetting. This is always set to true. - Delete
gen.go_options.no_default_modifierssetting. - Delete
lint.groupsetting. - Delete
harbormasterglobal flag. - Refactor
create.dir_to_base_packageto the listcreate.packagesSee the documentation for more details. - Rename
create.dir_to_base_package->create.dir_to_package. - Move
prototool inittoprototool config init. - Move
gen.plugin_overridestogen.plugins.path. - Refactor
lintconfiguration. See the documentation for details. - Refactor
format --no-rewriteso that the previous default is now enabled viaformat --fix.
- Fix
excludessetting to correctly match file path prefixes.
0.5.0 - 2018-07-26
- A linter to verify that no enum uses the option
allow_alias. - The
--protoc-urlflag can now handle references to local protoc zip files as well as normal http references by handling urls of the formfile:///path/to/protoc.zip.
- 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, andservice-descriptor-protoare deleted to reduce the surface area for the v1.0 release. - The commands
list-all-lintersandlist-lintersare now flags on thelintcommand. - The flags
--cache-pathand--print-fieldsare deleted to reduce the surface area for the v1.0 release. - The option
lint.groupin theprototool.yamlconfiguration is deleted to reduce the surface area for the v1.0 release. - The command
protoc-commandsis now accessible via the--dry-runflag on the commandscompileandgen. - The
grpccommand now takes the flags--address,--method, and--dataor--stdinas opposed to parsing these from variable-length command args. - If more than one
prototool.yamlis found for the input directory or files, an error is returned. - The
prototoolbinary package is moved underinternal.
0.4.0 - 2018-06-22
- A new command
prototool createto auto-generate Protobuf files from a template. The generated files have the Protobuf package,go_package,java_multiple_files,java_outer_classname, andjava_packagevalues 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 forprototool createin the README.md for more details.
- The values for
java_multiple_files,java_outer_classname, andjava_packagethat 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 formatwill now automatically update the value ofgo_package,java_multiple_files,java_outer_classname, andjava_packageto match what is expected in the default Style Guide. This functionality can be suppressed with the flag--no-rewrite. See the documentation forprototool formatin the README.md for more details.- Formatting configuration options are removed. We think there should be only one way to format, so we went with defaults of two spaces for indents, semicolons at the end of RPCs if there are no RPC options, and always having a newline at the end of a file.
0.3.0 - 2018-06-14
- Linters to verify that
java_multiple_filesandjava_outer_classnameare unset.
- 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
FileDescriptorSetsare now properly cleaned up. - Packages that begin with a keyword no longer produce an error when using
prototool formatorprototool lint.
0.2.0 - 2018-05-29
- A default lint rule to verify that a package is always declared.
- A lint group
allthat contains all the lint rules, not just the default lint rules. - A flag
--harbormasterthat will print failures in JSON that is compatible with the Harbormaster API.
prototool initwill 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.
- Initial release.