Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/server.py @ 30518:add7bcad1d9c
server: move service factory from hgweb
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 15 Oct 2016 14:09:36 +0900 |
parents | dd539e2d89aa |
children | a0878bc87379 |
comparison
equal
deleted
inserted
replaced
30517:9195bc4cb816 | 30518: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) |