mercurial/commands.py
changeset 10644 63948e7d37f7
parent 10635 27027bee318e
child 10649 e13797685ee6
--- a/mercurial/commands.py	Thu Mar 11 13:32:43 2010 +0100
+++ b/mercurial/commands.py	Thu Mar 11 13:33:29 2010 +0100
@@ -12,7 +12,7 @@
 import hg, util, revlog, bundlerepo, extensions, copies, error
 import patch, help, mdiff, url, encoding, templatekw
 import archival, changegroup, cmdutil, sshserver, hbisect
-from hgweb import server
+from hgweb import server, hgweb_mod, hgwebdir_mod
 import merge as merge_
 import minirst
 
@@ -2887,7 +2887,7 @@
 
     baseui = repo and repo.baseui or ui
     optlist = ("name templates style address port prefix ipv6"
-               " accesslog errorlog webdir_conf certificate encoding")
+               " accesslog errorlog certificate encoding")
     for o in optlist.split():
         val = opts.get(o, '')
         if val in (None, ''): # should check against default options instead
@@ -2896,14 +2896,18 @@
         if repo and repo.ui != baseui:
             repo.ui.setconfig("web", o, val)
 
-    if repo is None and not ui.config("web", "webdir_conf"):
-        raise error.RepoError(_("There is no Mercurial repository here"
-                                " (.hg not found)"))
+    if opts.get('webdir_conf'):
+        app = hgwebdir_mod.hgwebdir(opts['webdir_conf'], ui)
+    elif repo is not None:
+        app = hgweb_mod.hgweb(hg.repository(repo.ui, repo.root))
+    else:
+        raise error.RepoError(_("There is no Mercurial repository"
+                                " here (.hg not found)"))
 
     class service(object):
         def init(self):
             util.set_signal_handler()
-            self.httpd = server.create_server(baseui, repo)
+            self.httpd = server.create_server(ui, app)
 
             if opts['port'] and not ui.verbose:
                 return