Sha256: 573344152c02627ea11b41e436d6343266e1072d16e04352d1d29c678ee7ddec

Contents?: true

Size: 988 Bytes

Versions: 4

Compression:

Stored size: 988 Bytes

Contents

require 'facet/hash/keys_to_s'


module Reap

  # Rake adapter translates a Reap task into a Rake task.

  def self.RakeAdapter( reapclass )

    require 'rake/tasklib'

    Class.new( ::Rake::TaskLib ) do

      define_method( :reapclass ) {  reapclass }

      attr_accessor :name, :options

      # Create task.
      def initialize(name=reapclass.task_name) # :yield:
        @name = name
        @options = nil
        if block_given?
          options = OpenObject.new
          yield( options )
          @options = options.to_h.keys_to_s
          #reapclass.master[reapclass.task_name].update( @options )
        end
        define
      end

      # Create the tasks defined by this task lib.
      def define
        desc reapclass.task_desc
        task name do
          rc = reapclass.new
          if @options
            rc.execute( @options.to_h )
          else
            rc.execute
          end
        end
        self
      end

    end

  end

end # module Reap

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
reap-4.5.0 lib/reap/rakeadapter.rb
reap-4.5.1 lib/reap/rakeadapter.rb
reap-4.5.2 lib/reap/rakeadapter.rb
reap-5.0.0 lib/reap/rakeadapter.rb