class RakeFactory::Task

Attributes

configuration_block[RW]

Public Class Methods

inherited(inheritor) click to toggle source
Calls superclass method
# File lib/rake_factory/task.rb, line 16
def self.inherited(inheritor)
  super(inheritor)
  inheritor.singleton_class.class_eval do
    define_method :define do |*args, &block|
      inheritor.new(*args, &block).define_on(Rake.application)
    end
  end
end
new(*args, &configuration_block) click to toggle source
# File lib/rake_factory/task.rb, line 25
def initialize(*args, &configuration_block)
  setup_parameter_defaults
  process_arguments(args)
  process_configuration_block(configuration_block)
end

Public Instance Methods

check_parameter_requirements() click to toggle source
# File lib/rake_factory/task.rb, line 52
def check_parameter_requirements
  self.class.parameter_set.enforce_requirements_on(self)
end
define_on(application) click to toggle source
# File lib/rake_factory/task.rb, line 62
def define_on(application)
  task = application.define_task(
      Rake::Task,
      name,
      argument_names => prerequisites,
      order_only: order_only_prerequisites
  ) do |_, args|
    invoke_configuration_block(args)
    check_parameter_requirements
    invoke_actions(args)
  end
  task.add_description(description)
  self
end
invoke_actions(args) click to toggle source
# File lib/rake_factory/task.rb, line 56
def invoke_actions(args)
  self.class.actions.each do |action|
    action.call(*[self, args].slice(0, action.arity))
  end
end
invoke_configuration_block(args) click to toggle source
# File lib/rake_factory/task.rb, line 44
def invoke_configuration_block(args)
  if configuration_block
    view = ParameterView.new(self)
    configuration_block.call(
        *[view, args].slice(0, configuration_block.arity))
  end
end
process_arguments(args) click to toggle source
# File lib/rake_factory/task.rb, line 35
def process_arguments(args)
  opts = args.first || {}
  opts.each { |key, value| set_if_value_present(key, value) }
end
process_configuration_block(configuration_block) click to toggle source
# File lib/rake_factory/task.rb, line 40
def process_configuration_block(configuration_block)
  set_if_value_present(:configuration_block, configuration_block)
end
setup_parameter_defaults() click to toggle source
# File lib/rake_factory/task.rb, line 31
def setup_parameter_defaults
  self.class.parameter_set.apply_defaults_to(self)
end

Private Instance Methods

set_if_value_present(key, value) click to toggle source
# File lib/rake_factory/task.rb, line 79
def set_if_value_present(key, value)
  if self.respond_to?("#{key}=") && !value.nil?
    self.send("#{key}=", value)
  end
end