Sha256: ecf572acf88142f972c9e959cd086d7ac97e070f13ca7a916e37c9b673d94383

Contents?: true

Size: 1.1 KB

Versions: 5

Compression:

Stored size: 1.1 KB

Contents

require 'rake/tasklib'

require_relative 'parameters'
require_relative 'parameter_view'
require_relative 'actions'
require_relative 'configurable'
require_relative 'defaults'
require_relative 'definable'
require_relative 'arguments'

module RakeFactory
  class Task < ::Rake::TaskLib
    extend Definable

    include Parameters
    include Configurable
    include Defaults
    include Arguments
    include Actions

    def define_on(application)
      creator = self

      @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)
      @task.instance_eval do
        define_singleton_method(:creator) { creator }
      end

      self
    end

    def method_missing(method, *args, &block)
      if @task.respond_to?(method)
        @task.send(method, *args, &block)
      else
        super(method, *args, &block)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rake_factory-0.9.0.pre.1 lib/rake_factory/task.rb
rake_factory-0.8.0 lib/rake_factory/task.rb
rake_factory-0.7.0 lib/rake_factory/task.rb
rake_factory-0.6.0 lib/rake_factory/task.rb
rake_factory-0.5.0 lib/rake_factory/task.rb