In Files

Parent

Thor::Task

Constants

FILE_REGEXP

Public Class Methods

new(name, description, long_description, usage, options=nil) click to toggle source
# File lib/thor/task.rb, line 5
def initialize(name, description, long_description, usage, options=nil)
  super(name.to_s, description, long_description, usage, options || {})
end

Public Instance Methods

formatted_usage(klass, namespace = true, subcommand = false) click to toggle source

Returns the formatted usage by injecting given required arguments and required options into the given usage.

# File lib/thor/task.rb, line 33
def formatted_usage(klass, namespace = true, subcommand = false)
  if namespace
    namespace = klass.namespace
    formatted = "#{namespace.gsub(/^(default)/,'')}:"
    formatted.sub!(/.$/, ' ') if subcommand
  end

  formatted ||= ""

  # Add usage with required arguments
  formatted << if klass && !klass.arguments.empty?
    usage.to_s.gsub(/^#{name}/) do |match|
      match << " " << klass.arguments.map{ |a| a.usage }.compact.join(' ')
    end
  else
    usage.to_s
  end

  # Add required options
  formatted << " #{required_options}"

  # Strip and go!
  formatted.strip
end
hidden?() click to toggle source
# File lib/thor/task.rb, line 14
def hidden?
  false
end
run(instance, args=[]) click to toggle source

By default, a task invokes a method in the thor class. You can change this implementation to create custom tasks.

# File lib/thor/task.rb, line 20
def run(instance, args=[])
  public_method?(instance) ?
    instance.send(name, *args) : instance.class.handle_no_task_error(name)
rescue ArgumentError => e
  handle_argument_error?(instance, e, caller) ?
    instance.class.handle_argument_error(self, e) : (raise e)
rescue NoMethodError => e
  handle_no_method_error?(instance, e, caller) ?
    instance.class.handle_no_task_error(name) : (raise e)
end

Protected Instance Methods

handle_argument_error?(instance, error, caller) click to toggle source
# File lib/thor/task.rb, line 79
def handle_argument_error?(instance, error, caller)
  not_debugging?(instance) && error.message =~ /wrong number of arguments/ && begin
    saned = sans_backtrace(error.backtrace, caller)
    # Ruby 1.9 always include the called method in the backtrace
    saned.empty? || (saned.size == 1 && RUBY_VERSION >= "1.9")
  end
end
handle_no_method_error?(instance, error, caller) click to toggle source
# File lib/thor/task.rb, line 87
def handle_no_method_error?(instance, error, caller)
  not_debugging?(instance) &&
    error.message =~ /^undefined method `#{name}' for #{Regexp.escape(instance.to_s)}$/
end
not_debugging?(instance) click to toggle source
# File lib/thor/task.rb, line 60
def not_debugging?(instance)
  !(instance.class.respond_to?(:debugging) && instance.class.debugging)
end
required_options() click to toggle source
# File lib/thor/task.rb, line 64
def required_options
  @required_options ||= options.map{ |_, o| o.usage if o.required? }.compact.sort.join(" ")
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.