Class: Bundler::Thor::Command
| Relationships & Source Files | |
| Extension / Inclusion / Inheritance Descendants | |
| Subclasses: | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
          Struct
         | |
| Instance Chain: 
          self,
          Struct
         | |
| Inherits: | Struct 
 | 
| Defined in: | lib/bundler/vendor/thor/lib/thor/command.rb | 
Constant Summary
- 
    FILE_REGEXP =
    
 # File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 3/^#{Regexp.escape(File.dirname(__FILE__))}/
Class Method Summary
Instance Attribute Summary
- #ancestor_name rw
- #description rw
- #hidden? ⇒ Boolean readonly
- #long_description rw
- #name rw
- #options rw
- #usage rw
Instance Method Summary
- 
    
      #formatted_usage(klass, namespace = true, subcommand = false)  
    
    Returns the formatted usage by injecting given required arguments and required options into the given usage. 
- 
    
      #run(instance, args = [])  
    
    By default, a command invokes a method in the thor class. 
- #handle_argument_error?(instance, error, caller) ⇒ Boolean protected
- #handle_no_method_error?(instance, error, caller) ⇒ Boolean protected
- #local_method?(instance, name) ⇒ Boolean protected
- #not_debugging?(instance) ⇒ Boolean protected
- #private_method?(instance) ⇒ Boolean protected
- 
    
      #required_arguments_for(klass, usage)  
    
    protected
    Add usage with required arguments. 
- #required_options protected
- #initialize_copy(other) Internal use only
- 
    
      #public_method?(instance)  ⇒ Boolean 
    
    protected
    Internal use only
    Given a target, checks if this class name is a public method. 
- #sans_backtrace(backtrace, caller) protected Internal use only
Constructor Details
    .new(name, description, long_description, usage, options = nil)  ⇒ Command 
  
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 5
def initialize(name, description, long_description, usage, = nil) super(name.to_s, description, long_description, usage, || {}) end
Instance Attribute Details
#ancestor_name (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
#description (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
#long_description (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
#name (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
#options (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
#usage (rw)
[ GitHub ]# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 2
class Command < Struct.new(:name, :description, :long_description, :usage, :options, :ancestor_name)
Instance Method Details
#formatted_usage(klass, namespace = true, subcommand = false)
Returns the formatted usage by injecting given required arguments and required options into the given usage.
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 41
def formatted_usage(klass, namespace = true, subcommand = false) if ancestor_name formatted = "#{ancestor_name} ".dup # add space elsif namespace namespace = klass.namespace formatted = "#{namespace.gsub(/^(default)/, '')}:".dup end formatted ||= "#{klass.namespace.split(':').last} ".dup if subcommand formatted ||= "".dup Array(usage).map do |specific_usage| formatted_specific_usage = formatted formatted_specific_usage += required_arguments_for(klass, specific_usage) # Add required options formatted_specific_usage += " #{}" # Strip and go! formatted_specific_usage.strip end.join("\n") end
    #handle_argument_error?(instance, error, caller)  ⇒ Boolean  (protected)
  
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 105
def handle_argument_error?(instance, error, caller) not_debugging?(instance) && (error. =~ /wrong number of arguments/ || error. =~ /given \d*, expected \d*/) && begin saned = sans_backtrace(error.backtrace, caller) saned.empty? || saned.size == 1 end end
    #handle_no_method_error?(instance, error, caller)  ⇒ Boolean  (protected)
  
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 112
def handle_no_method_error?(instance, error, caller) not_debugging?(instance) && error. =~ /^undefined method `#{name}' for #{Regexp.escape(instance.to_s)}$/ end
#initialize_copy(other)
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 9
def initialize_copy(other) #:nodoc: super(other) self. = other..dup if other. end
    #local_method?(instance, name)  ⇒ Boolean  (protected)
  
    #not_debugging?(instance)  ⇒ Boolean  (protected)
  
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 78
def not_debugging?(instance) !(instance.class.respond_to?(:debugging) && instance.class.debugging) end
    #private_method?(instance)  ⇒ Boolean  (protected)
  
    #public_method?(instance)  ⇒ Boolean  (protected)
  
  
    This method is for internal use only.
  
Given a target, checks if this class name is a public method.
#required_arguments_for(klass, usage) (protected)
Add usage with required arguments
#required_options (protected)
[ GitHub ]#run(instance, args = [])
By default, a command invokes a method in the thor class. You can change this implementation to create custom commands.
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 20
def run(instance, args = []) arity = nil if private_method?(instance) instance.class.handle_no_command_error(name) elsif public_method?(instance) arity = instance.method(name).arity instance.__send__(name, *args) elsif local_method?(instance, :method_missing) instance.__send__(:method_missing, name.to_sym, *args) else instance.class.handle_no_command_error(name) end rescue ArgumentError => e handle_argument_error?(instance, e, caller) ? instance.class.handle_argument_error(self, e, args, arity) : (raise e) rescue NoMethodError => e handle_no_method_error?(instance, e, caller) ? instance.class.handle_no_command_error(name) : (raise e) end
#sans_backtrace(backtrace, caller) (protected)
    This method is for internal use only.
  
  [ GitHub ]
# File 'lib/bundler/vendor/thor/lib/thor/command.rb', line 100
def sans_backtrace(backtrace, caller) #:nodoc: saned = backtrace.reject { |frame| frame =~ FILE_REGEXP || (frame =~ /\.java:/ && RUBY_PLATFORM =~ /java/) || (frame =~ %r{^kernel/} && RUBY_ENGINE =~ /rbx/) } saned - caller end