code: def main(self, argv=None, exit=True):
          
          bowl = self.prepare()
          try:
              retval = bowl.eat(argv)
          except SystemExit as exc:
              if exit:
                  raise
              else:
                  return exc.args[0]
          else:
              if retval is None:
                  retval = 0
              if exit:
                  raise SystemExit(retval)
              else:
                  return retval
docs: Shortcut to prepare a bowl of guacamole and eat it.
  
          :param argv:
              Command line arguments or None. None means that sys.argv is used
          :param exit:
              Raise SystemExit after finishing execution
          :returns:
              Whatever is returned by the eating the guacamole.
          :raises:
              Whatever is raised by eating the guacamole.
  
          .. note::
              This method always either raises and exception or returns an
              object. The way it behaves depends on the value of the `exit`
              argument.
  
          This method can be used to quickly take a recipe, prepare the guacamole
          and eat it. It is named main as it is applicable as the main method of
          an application.
  
          The `exit` argument controls if main returns normally or raises
          SystemExit.  By default it will raise SystemExit (it will either wrap
          the return value with SystemExit or re-raise the SystemExit exception
          again). If SystemExit is raised but `exit` is False the argument to
          SystemExit is unwrapped and returned instead.