mercurial/hgweb/hgwebdir_mod.py
changeset 2535 b8ccf6386db7
parent 2514 419c42223bee
child 2537 b6975008d44f
equal deleted inserted replaced
2534:d5a3cc6520d5 2535:b8ccf6386db7
    18 class hgwebdir(object):
    18 class hgwebdir(object):
    19     def __init__(self, config):
    19     def __init__(self, config):
    20         def cleannames(items):
    20         def cleannames(items):
    21             return [(name.strip(os.sep), path) for name, path in items]
    21             return [(name.strip(os.sep), path) for name, path in items]
    22 
    22 
       
    23         self.origconfig = config
    23         self.motd = ""
    24         self.motd = ""
    24         self.repos_sorted = ('name', False)
    25         self.repos_sorted = ('name', False)
    25         if isinstance(config, (list, tuple)):
    26         if isinstance(config, (list, tuple)):
    26             self.repos = cleannames(config)
    27             self.repos = cleannames(config)
    27             self.repos_sorted = ('', False)
    28             self.repos_sorted = ('', False)
    44                         if name.startswith(prefix):
    45                         if name.startswith(prefix):
    45                             name = name[len(prefix):]
    46                             name = name[len(prefix):]
    46                         self.repos.append((name.lstrip(os.sep), repo))
    47                         self.repos.append((name.lstrip(os.sep), repo))
    47             self.repos.sort()
    48             self.repos.sort()
    48 
    49 
    49     def run(self, req):
    50     def run(self):
       
    51         if os.environ['GATEWAY_INTERFACE'][0:6] != "CGI/1.":
       
    52             raise RuntimeError("This function is only intended to be called while running as a CGI script.")
       
    53         import mercurial.hgweb.wsgicgi as wsgicgi
       
    54         from request import wsgiapplication
       
    55         def make_web_app():
       
    56             return self.__class__(self.origconfig)
       
    57         wsgicgi.launch(wsgiapplication(make_web_app))
       
    58 
       
    59     def run_wsgi(self, req):
    50         def header(**map):
    60         def header(**map):
    51             header_file = cStringIO.StringIO(''.join(tmpl("header", **map)))
    61             header_file = cStringIO.StringIO(''.join(tmpl("header", **map)))
    52             msg = mimetools.Message(header_file, 0)
    62             msg = mimetools.Message(header_file, 0)
    53             req.header(msg.items())
    63             req.header(msg.items())
    54             yield header_file.read()
    64             yield header_file.read()