# File lib/rhc/command_runner.rb, line 33
    def run!
      trace = false
      require_program :version, :description
      #trap('INT') { abort program(:int_message) } if program(:int_message)
      #trap('INT') { program(:int_block).call } if program(:int_block)

      global_option('-h', '--help', 'Help on any command', :hide => true) do
        args = @args - %w[-h --help]
        command(:help).run(*args)
        return
      end
      global_option('--version', 'Display version information', :hide => true) { say version; return }

      # remove these because we monkey patch Commands to process all options
      # at once, avoiding conflicts between the global and command options
      # code left here just in case someone compares this with the original
      # commander code
      #parse_global_options
      #remove_global_options options, @args

      # special case --trace because we need to use it in the runner
      trace = options_parse_trace

      # special case --version so it is processed before an invalid command
      options_parse_version

      unless trace
        begin
          run_active_command
        rescue InvalidCommandError => e
          if provided_arguments.empty?
            say RHC::HelpFormatter.new(self).render
          else
            RHC::Helpers.error "The command '#{program :name} #{provided_arguments.join(' ')}' is not recognized.\n"
            say "See '#{program :name} help' for a list of valid commands."
          end
          1
        rescue \
          ArgumentError,
          OptionParser::InvalidOption,
          OptionParser::InvalidArgument,
          OptionParser::MissingArgument => e

          help_bindings = CommandHelpBindings.new(active_command, commands, self)
          usage = RHC::HelpFormatter.new(self).render_command_syntax(help_bindings)
          RHC::Helpers.error e.message
          say "#{usage}"
          1
        rescue RHC::Exception, RHC::Rest::Exception => e
          RHC::Helpers.error e.message
          e.code.nil? ? 128 : e.code
        end
      else
        run_active_command
      end
    end