gem install proto_plugin
Creating a protoc
plugin is as simple as creating a new executable script.
The name of the file must follow the format protoc-gen-[plugin-name]
. As an example, the below file could be named protoc-gen-mycoolplugin
.
#! /usr/bin/env ruby
require "proto_plugin"
class MyCoolPlugin < ProtoPlugin::Base
def run
request.file_to_generate.each do |f|
name = File.basename(f.name, ".proto")
add_file(name: "#{name}.txt", content: <<~TXT)
This file was generated from #{name}.proto!
TXT
end
end
end
MyCoolPlugin.run!
Tip
For more details on the available API, see the docs: https://cocoahero.github.io/proto_plugin
To invoke the plugin, first make sure you have protoc
installed. Then in a terminal, run:
protoc --plugin=path/to/protoc-gen-mycoolplugin --mycoolplugin_out=. input.proto
If the executable script is in your $PATH
, for example installed via a gem, you can omit the --plugin
argument.
protoc --mycoolplugin_out=. input.proto
See exe/protoc-gen-proto-plugin-demo
in this repo as another example of a plugin. Since it should be in your $PATH
(you did install this gem right?) you can invoke it with:
protoc --proto-plugin-demo_out=. input.proto
After checking out the repo, run bin/setup
to install dependencies. Then, run bin/rake
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/cocoahero/proto_plugin.
The gem is available as open source under the terms of the MIT License.