module Mixlib::CLI

def initialize(*args)

object:: Returns an instance of whatever you wanted :)
=== Returns

*args:: The array of arguments passed to the initializer
=== Parameters

Create a new Mixlib::CLI class. If you override this, make sure you call super!
def initialize(*args)
  @options = Hash.new
  @config  = Hash.new
  @default_config = Hash.new
  @opt_parser = nil
  # Set the banner
  @banner  = self.class.banner
  # Dupe the class options for this instance
  klass_options = self.class.options
  klass_options.keys.inject(@options) { |memo, key| memo[key] = klass_options[key].dup; memo }
  # If use_separate_defaults? is on, default values go in @default_config
  defaults_container = if self.class.use_separate_defaults?
                         @default_config
                       else
                         @config
                       end
  # Set the default configuration values for this instance
  @options.each do |config_key, config_opts|
    config_opts[:on] ||= :on
    config_opts[:boolean] ||= false
    config_opts[:required] ||= false
    config_opts[:proc] ||= nil
    config_opts[:show_options] ||= false
    config_opts[:exit] ||= nil
    if config_opts.has_key?(:default)
      defaults_container[config_key] = config_opts[:default]
    end
  end
  super(*args)
end