def initialize(args=[], options={}, config={})
parse_options = self.class.class_options
if options.is_a?(Array)
command_options = config.delete(:command_options)
parse_options = parse_options.merge(command_options) if command_options
array_options, hash_options = options, {}
else
array_options, hash_options = [], options
end
stop_on_unknown = self.class.stop_on_unknown_option? config[:current_command]
opts = Thor::Options.new(parse_options, hash_options, stop_on_unknown)
self.options = opts.parse(array_options)
self.options = config[:class_options].merge(self.options) if config[:class_options]
opts.check_unknown! if self.class.check_unknown_options?(config)
to_parse = args
to_parse += opts.remaining unless self.class.strict_args_position?(config)
thor_args = Thor::Arguments.new(self.class.arguments)
thor_args.parse(to_parse).each { |k,v| __send__("#{k}=", v) }
@args = thor_args.remaining
end