module Buildr::Protobuf

Provides Protocol buffer code generation tasks.

Require explicitly using require "buildr/protobuf".

Usage in your project:

protoc _("path/to/proto/files")

and also supports three options,

:include => ["path/to/proto", "src/main/resources/proto" # the directories in which to search for imports
:output => "target/generated/protoc"                     # this is the default
:lang => "java"                                          # defaults to compile.language

Public Class Methods

files_from_sources(*args) click to toggle source
# File addon/buildr/protobuf.rb, line 59
def files_from_sources(*args)
  args.flatten.map(&:to_s).collect { |f| File.directory?(f) ? FileList[f + "/**/*.proto"] : f }.flatten
end
protoc(*args) click to toggle source
# File addon/buildr/protobuf.rb, line 34
def protoc(*args)
  options = Hash === args.last ? args.pop : {}
  rake_check_options options, :output, :lang, :include

  options[:lang] ||= :java
  options[:output] ||= File.expand_path "target/generated/protoc"
  options[:include] ||= []

  command_line = []

  command_line << "--#{options[:lang]}_out=#{options[:output]}" if options[:output]

  options[:include].each { |i| command_line << "-I#{i}" }

  command_line += files_from_sources(*args)

  mkdir_p( options[:output] )

  system protoc_path, *command_line
end
protoc_path() click to toggle source
# File addon/buildr/protobuf.rb, line 55
def protoc_path
  ENV['PROTOC'] || "protoc"
end

Public Instance Methods

protoc(*args) click to toggle source
# File addon/buildr/protobuf.rb, line 64
def protoc(*args)
  if Hash === args.last
    options = args.pop
  else
    options = {}
  end

  options[:output] ||= path_to(:target, :generated, :protoc)
  options[:lang] ||= compile.language if compile.language

  file(options[:output]=>Protobuf.files_from_sources(*args)) do |task|
    Protobuf.protoc task.prerequisites, options
  end
end