# module Bundler::Thor::Base

### Attributes

shell[W]
args[RW]
options[RW]
parent_options[RW]

### Public Class Methods

new(args = [], local_options = {}, config = {}) click to toggle source

It receives arguments in an `Array` and two hashes, one for options and other for configuration.

Notice that it does not check if all required arguments were supplied. It should be done by the parser.

#### Parameters¶ ↑

args>

  An array of objects. The objects are applied to their respective accessors declared with `argument`.

options<Hash>

  An options hash that will be available as self.options. The hash given is converted to a hash with indifferent access, magic predicates (options.skip?) and then frozen.

config<Hash>

  Configuration for this Bundler::Thor class.

    # File lib/bundler/vendor/thor/lib/thor/base.rb, line 44
    def initialize(args = [], local_options = {}, config = {})
      parse_options = self.class.class_options

      # The start method splits inbound arguments at the first argument
      # that looks like an option (starts with - or --). It then calls
      # new, passing in the two halves of the arguments Array as the
      # first two parameters.

      command_options = config.delete(:command_options) # hook for start
      parse_options = parse_options.merge(command_options) if command_options
      if local_options.is_a?(Array)
        array_options = local_options
        hash_options = {}
      else
        # Handle the case where the class was explicitly instantiated
        # with pre-parsed options.
        array_options = []
        hash_options = local_options
      end

      # Let Bundler::Thor::Options parse the options first, so it can remove
      # declared options from the array. This will leave us with
      # a list of arguments that weren't declared.
      stop_on_unknown = self.class.stop_on_unknown_option? config[:current_command]
      disable_required_check = self.class.disable_required_check? config[:current_command]
      opts = Bundler::Thor::Options.new(parse_options, hash_options, stop_on_unknown, disable_required_check)
      self.options = opts.parse(array_options)
      self.options = config[:class_options].merge(options) if config[:class_options]

      # If unknown options are disallowed, make sure that none of the
      # remaining arguments looks like an option.
      opts.check_unknown! if self.class.check_unknown_options?(config)

      # Add the remaining arguments from the options parser to the
      # arguments passed in to initialize. Then remove any positional
      # arguments declared using #argument (this is primarily used
      # by Bundler::Thor::Group). Tis will leave us with the remaining
      # positional arguments.
      to_parse  = args
      to_parse += opts.remaining unless self.class.strict_args_position?(config)

      thor_args = Bundler::Thor::Arguments.new(self.class.arguments)
      thor_args.parse(to_parse).each { |k, v| __send__("#{k}=", v) }
      @args = thor_args.remaining
    end

shell() click to toggle source

Returns the shell used in all Bundler::Thor classes. If you are in a Unix platform it will use a colored log, otherwise it will use a basic one without color.

    # File lib/bundler/vendor/thor/lib/thor/shell.rb, line 11
    def shell
      @shell ||= if ENV["THOR_SHELL"] && !ENV["THOR_SHELL"].empty?
        Bundler::Thor::Shell.const_get(ENV["THOR_SHELL"])
      elsif RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ && !ENV["ANSICON"]
        Bundler::Thor::Shell::Basic
      else
        Bundler::Thor::Shell::Color
      end
    end

subclass_files() click to toggle source

Returns the files where the subclasses are kept.

#### Returns¶ ↑

Hash[path<String> => Class]

    # File lib/bundler/vendor/thor/lib/thor/base.rb, line 111
    def subclass_files
      @subclass_files ||= Hash.new { |h, k| h[k] = [] }
    end

subclasses() click to toggle source

Returns the classes that inherits from Bundler::Thor or `Bundler::Thor::Group`.

#### Returns¶ ↑

Array

    # File lib/bundler/vendor/thor/lib/thor/base.rb, line 102
    def subclasses
      @subclasses ||= []
    end