# File lib/rhc/commands.rb, line 49
    def self.to_commander(instance=Commander::Runner.instance)
      global_options.each do |args, block|
        opts = (args.pop if Hash === args.last) || {}
        option = instance.global_option(*args, &block).last
        option.merge!(opts)
      end
      commands.each_pair do |name, opts|
        instance.command name do |c|
          c.description = opts[:description]
          c.summary = opts[:summary]
          c.syntax = opts[:syntax]

          (options_metadata = opts[:options] || []).each do |o|
            option_data = [o[:switches], o[:description]].flatten(1)
            c.option *option_data
            o[:arg] = Commander::Runner.switch_to_sym(o[:switches].last)
          end

          args_metadata = opts[:args] || []
          args_metadata.each do |arg_meta|
            arg_switches = arg_meta[:switches]
            unless arg_switches.nil? or arg_switches.empty?
              arg_switches << arg_meta[:description]
              c.option *arg_switches
            end
          end

          unless opts[:aliases].nil?
            opts[:aliases].each do |a|
              alias_cmd = a[:action]

              unless a[:root_command]
                # prepend the current resource
                alias_components = name.split(" ")
                alias_components[-1] = a[:action]
                alias_cmd = alias_components.join(' ')
              end

              deprecated[alias_cmd] = true if a[:deprecated]
              instance.alias_command "#{alias_cmd}", "#{name}""#{name}"
            end
          end

          c.when_called do |args, options|
            config = global_config_setup(options)
            deprecated?

            cmd = opts[:class].new
            cmd.options = options
            cmd.config = config

            filled_args = cmd.validate_args_and_options(args_metadata, options_metadata, args)

            needs_configuration!(cmd, options, config)
            cmd.send(opts[:method], *filled_args)
          end
        end
      end
      self
    end