Sha256: abe385e90ac70f2bc6c7687926c6318533e39998af03968890dc3912c4a4aa22

Contents?: true

Size: 665 Bytes

Versions: 3

Compression:

Stored size: 665 Bytes

Contents

require 'thor'

module Gritano
  module CLI
    class Thor < Thor
      def self.define_task(name, description="", &block)
        params = block.parameters.map { |type, name| name.upcase }.join(' ')
        desc("#{name} #{params}".rstrip, description)
        bf = before_filters
        define_method(name.to_sym) do |*params|
          instance_eval(&bf[name]) if bf[name]
          instance_exec(*params, &block)
        end
      end

      def self.before(methods, &block)
        methods.each do |method|
          before_filters[method] = block
        end
      end

      def self.before_filters
        @before_filters ||= {}
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gritano-2.0.2 lib/gritano/thor.rb
gritano-2.0.1 lib/gritano/thor.rb
gritano-2.0.0 lib/gritano/thor.rb