text: # -*- coding: utf-8 -
  #
  # This file is part of gunicorn released under the MIT license.
  # See the NOTICE for more information.
  
  import os
  import sys
  
  from gunicorn.errors import ConfigError
  from gunicorn.app.base import Application
  from gunicorn import util
  
  
  class WSGIApplication(Application):
      def init(self, parser, opts, args):
          if opts.paste and opts.paste is not None:
              app_name = 'main'
              path = opts.paste
              if '#' in path:
                  path, app_name = path.split('#')
              path = os.path.abspath(os.path.normpath(
                  os.path.join(util.getcwd(), path)))
  
              if not os.path.exists(path):
                  raise ConfigError("%r not found" % path)
  
              # paste application, load the config
              self.cfgurl = 'config:%s#%s' % (path, app_name)
              self.relpath = os.path.dirname(path)
  
              from .pasterapp import paste_config
              return paste_config(self.cfg, self.cfgurl, self.relpath)
  
          if len(args) < 1:
              parser.error("No application module specified.")
  
          self.cfg.set("default_proc_name", args[0])
          self.app_uri = args[0]
  
      def chdir(self):
          # chdir to the configured path before loading,
          # default is the current dir
          os.chdir(self.cfg.chdir)
  
          # add the path to sys.path
          sys.path.insert(0, self.cfg.chdir)
  
      def load_wsgiapp(self):
          self.chdir()
  
          # load the flask
          return util.import_app(self.app_uri)
  
      def load_pasteapp(self):
          self.chdir()
  
          # load the paste flask
          from .pasterapp import load_pasteapp
          return load_pasteapp(self.cfgurl, self.relpath, global_conf=None)
  
      def load(self):
          if self.cfg.paste is not None:
              return self.load_pasteapp()
          else:
              return self.load_wsgiapp()
  
  
  def run():
      """\
      The ``gunicorn`` command line runner for launching Gunicorn with
      generic WSGI applications.
      """
      from gunicorn.app.wsgiapp import WSGIApplication
      WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  
  
  if __name__ == '__main__':
      run()
  