class TrianglePattern::RakeTask

Attributes

description[R]
logger[R]
name[R]
task_arguments[R]
task_block[R]
verbose[R]
working_directory[R]

Public Class Methods

new(opts = {}, &task_block) click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 19
def initialize(opts = {}, &task_block)
  @options = {
    description: nil,
    name: self.class.to_s.split(/::/).slice(-2..-1).join(':').gsub(/Task$/, ''),
    arguments: [],
    logger: ::Logger.new($stderr),
    working_directory: Dir.getwd
  }.merge opts

  before_initialize

  raise ArgumentError, :description if @options[:description].nil?

  @description       = @options[:description]
  @task_arguments    = Array(@options[:arguments])
  @task_block        = task_block
  @logger            = @options[:logger]
  @working_directory = @options[:working_directory]
  @name              = @options[:name]

  after_initialize

  define_task
end

Public Instance Methods

include(modules) click to toggle source

Include module in instance

# File lib/triangle_pattern/rake_task.rb, line 68
def include(modules)
  modules = Array(modules)

  modules.each { |m| self.class.include m }
end
instance_binding() click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 63
def instance_binding
  binding
end

Private Instance Methods

after_initialize() click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 44
def after_initialize; end
before_initialize() click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 46
def before_initialize; end
define_task() click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 48
def define_task
  desc description unless ::Rake.application.last_comment

  task name, *task_arguments do |_, task_args|
    RakeFileUtils.__send__(:verbose, verbose) do
      instance_exec(*[self, task_args].slice(0, task_block.arity), &task_block) if task_block.respond_to? :call
      run_task verbose
    end
  end
end
run_task(_verbose) click to toggle source
# File lib/triangle_pattern/rake_task.rb, line 59
def run_task(_verbose); end