mercurial/server.py
changeset 30509 add7bcad1d9c
parent 30507 dd539e2d89aa
child 30510 a0878bc87379
equal deleted inserted replaced
30508:9195bc4cb816 30509:add7bcad1d9c
    15 from .i18n import _
    15 from .i18n import _
    16 
    16 
    17 from . import (
    17 from . import (
    18     commandserver,
    18     commandserver,
    19     error,
    19     error,
       
    20     hgweb,
    20     util,
    21     util,
    21 )
    22 )
    22 
    23 
    23 def runservice(opts, parentfn=None, initfn=None, runfn=None, logfile=None,
    24 def runservice(opts, parentfn=None, initfn=None, runfn=None, logfile=None,
    24                runargs=None, appendpid=False):
    25                runargs=None, appendpid=False):
   116     mode = opts['cmdserver']
   117     mode = opts['cmdserver']
   117     try:
   118     try:
   118         return _cmdservicemap[mode](ui, repo, opts)
   119         return _cmdservicemap[mode](ui, repo, opts)
   119     except KeyError:
   120     except KeyError:
   120         raise error.Abort(_('unknown mode %s') % mode)
   121         raise error.Abort(_('unknown mode %s') % mode)
       
   122 
       
   123 def createhgwebservice(ui, repo, opts):
       
   124     # this way we can check if something was given in the command-line
       
   125     if opts.get('port'):
       
   126         opts['port'] = util.getport(opts.get('port'))
       
   127 
       
   128     alluis = set([ui])
       
   129     if repo:
       
   130         baseui = repo.baseui
       
   131         alluis.update([repo.baseui, repo.ui])
       
   132     else:
       
   133         baseui = ui
       
   134     webconf = opts.get('web_conf') or opts.get('webdir_conf')
       
   135     if webconf:
       
   136         # load server settings (e.g. web.port) to "copied" ui, which allows
       
   137         # hgwebdir to reload webconf cleanly
       
   138         servui = ui.copy()
       
   139         servui.readconfig(webconf, sections=['web'])
       
   140         alluis.add(servui)
       
   141     else:
       
   142         servui = ui
       
   143 
       
   144     optlist = ("name templates style address port prefix ipv6"
       
   145                " accesslog errorlog certificate encoding")
       
   146     for o in optlist.split():
       
   147         val = opts.get(o, '')
       
   148         if val in (None, ''): # should check against default options instead
       
   149             continue
       
   150         for u in alluis:
       
   151             u.setconfig("web", o, val, 'serve')
       
   152 
       
   153     app = hgweb.createapp(baseui, repo, webconf)
       
   154     return hgweb.httpservice(servui, app, opts)