class FPM::RakeTask
Attributes
options[R]
Public Class Methods
new(package_name, opts = {}, &block)
click to toggle source
# File lib/fpm/rake_task.rb, line 8 def initialize(package_name, opts = {}, &block) @options = OpenStruct.new(:name => package_name.to_s) @source, @target = opts.values_at(:source, :target).map(&:to_s) @directory = File.expand_path(opts[:directory].to_s) (@source.empty? || @target.empty? || options.name.empty?) && abort("Must specify package name, source and output") desc "Package #{@name}" unless ::Rake.application.last_comment task(options.name) do |_, task_args| block.call(*[options, task_args].first(block.arity)) if block_given? abort("Must specify args") unless options.respond_to?(:args) @args = options.delete_field(:args) run_cli end end
Private Instance Methods
parsed_options()
click to toggle source
# File lib/fpm/rake_task.rb, line 28 def parsed_options options.to_h.map do |option, value| opt = option.to_s.tr("_", "-") case when value.is_a?(String), value.is_a?(Symbol) %W(--#{opt} #{value}) when value.is_a?(Array) value.map { |v| %W(--#{opt} #{v}) } when value.is_a?(TrueClass) "--#{opt}" when value.is_a?(FalseClass) "--no-#{opt}" else fail TypeError, "Unexpected type: #{value.class}" end end end
run_cli()
click to toggle source
# File lib/fpm/rake_task.rb, line 47 def run_cli require "fpm" require "fpm/command" args = %W(-t #{@target} -s #{@source} -C #{@directory}) args << parsed_options args << @args args.flatten!.compact! exit(FPM::Command.new("fpm").run(args) || 0) end