def go!
      setup_defaults
      opts.post_setup
      opts.parse!
      opts.check_args!
      result = call_main
      if result.kind_of? Integer
        exit result
      else
        exit 0
      end
    rescue OptionParser::ParseError => ex
      logger.error ex.message
      puts
      puts opts.help
      exit 64 # Linux standard for bad command line
    end
def go!
      setup_defaults
      opts.post_setup
      opts.parse!
      opts.check_args!
      result = call_main
      if result.kind_of? Integer
        exit result
      else
        exit 0
      end
    rescue OptionParser::ParseError => ex
      logger.error ex.message
      puts
      puts opts.help
      exit 64 # Linux standard for bad command line
    end
Start your command-line app, exiting appropriately when
 complete.

 This *will* exit your program when it completes.  If your
 #main block evaluates to an integer, that value will be sent
 to Kernel#exit, otherwise, this will exit with 0

 If the command-line options couldn't be parsed, this
 will exit with 64 and whatever message OptionParser provided.

 If a required argument (see #arg) is not found, this exits with
 64 and a message about that missing argument.