##// END OF EJS Templates
hgweb: change startup argument processing...
mpm@selenic.com -
r987:bfe12654 default
parent child Browse files
Show More
@@ -1117,9 +1117,13 b' def serve(ui, repo, **opts):'
1117 r = repo.addchangegroup(fin)
1117 r = repo.addchangegroup(fin)
1118 respond("")
1118 respond("")
1119
1119
1120 httpd = hgweb.create_server(repo.root, opts["name"], opts["templates"],
1120 optlist = "name templates style address port ipv6 accesslog errorlog"
1121 opts["address"], opts["port"], opts["ipv6"],
1121 for o in optlist.split():
1122 opts['accesslog'], opts['errorlog'])
1122 if opts[o]:
1123 ui.setconfig("web", o, opts[o])
1124
1125 httpd = hgweb.create_server(repo)
1126
1123 if ui.verbose:
1127 if ui.verbose:
1124 addr, port = httpd.socket.getsockname()
1128 addr, port = httpd.socket.getsockname()
1125 if addr == '0.0.0.0':
1129 if addr == '0.0.0.0':
@@ -1402,7 +1406,8 b' table = {'
1402 ('a', 'address', '', 'interface address'),
1406 ('a', 'address', '', 'interface address'),
1403 ('n', 'name', "", 'repository name'),
1407 ('n', 'name', "", 'repository name'),
1404 ('', 'stdio', None, 'for remote clients'),
1408 ('', 'stdio', None, 'for remote clients'),
1405 ('t', 'templates', "", 'template map'),
1409 ('t', 'templates', "", 'template directory'),
1410 ('', 'style', "", 'template style'),
1406 ('6', 'ipv6', None, 'use IPv6 in addition to IPv4')],
1411 ('6', 'ipv6', None, 'use IPv6 in addition to IPv4')],
1407 "hg serve [OPTION]..."),
1412 "hg serve [OPTION]..."),
1408 "^status":
1413 "^status":
@@ -138,19 +138,21 b' common_filters = {'
138 }
138 }
139
139
140 class hgweb:
140 class hgweb:
141 def __init__(self, repo, name=None):
142 if type(repo) == type(""):
143 self.repo = repository(ui(), repo)
144 else:
145 self.repo = repo
141
146
142 def __init__(self, path, name=None, templates=""):
143 self.templates = templates
144 self.reponame = name
145 self.path = path
146 self.mtime = -1
147 self.mtime = -1
147 self.viewonly = 0
148 self.reponame = name or self.repo.ui.config("web", "name",
149 self.repo.root)
148
150
149 def refresh(self):
151 def refresh(self):
150 s = os.stat(os.path.join(self.path, ".hg", "00changelog.i"))
152 s = os.stat(os.path.join(self.repo.root, ".hg", "00changelog.i"))
151 if s.st_mtime != self.mtime:
153 if s.st_mtime != self.mtime:
152 self.mtime = s.st_mtime
154 self.mtime = s.st_mtime
153 self.repo = repository(ui(), self.path)
155 self.repo = repository(self.repo.ui, self.repo.root)
154 self.maxchanges = self.repo.ui.config("web", "maxchanges", 10)
156 self.maxchanges = self.repo.ui.config("web", "maxchanges", 10)
155 self.maxfiles = self.repo.ui.config("web", "maxchanges", 10)
157 self.maxfiles = self.repo.ui.config("web", "maxchanges", 10)
156 self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
158 self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
@@ -623,8 +625,7 b' class hgweb:'
623 self.refresh()
625 self.refresh()
624 args = cgi.parse()
626 args = cgi.parse()
625
627
626 t = self.templates or self.repo.ui.config("web", "templates",
628 t = self.repo.ui.config("web", "templates", templatepath())
627 templatepath())
628 m = os.path.join(t, "map")
629 m = os.path.join(t, "map")
629 style = self.repo.ui.config("web", "style", "")
630 style = self.repo.ui.config("web", "style", "")
630 if args.has_key('style'):
631 if args.has_key('style'):
@@ -640,11 +641,9 b' class hgweb:'
640 if "?" in uri: uri = uri.split("?")[0]
641 if "?" in uri: uri = uri.split("?")[0]
641 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri)
642 url = "http://%s%s%s" % (os.environ["SERVER_NAME"], port, uri)
642
643
643 name = self.reponame or self.repo.ui.config("web", "name", os.getcwd())
644
645 self.t = templater(m, common_filters,
644 self.t = templater(m, common_filters,
646 {"url":url,
645 {"url":url,
647 "repo":name,
646 "repo":self.reponame,
648 "header":header,
647 "header":header,
649 "footer":footer,
648 "footer":footer,
650 })
649 })
@@ -729,27 +728,18 b' class hgweb:'
729 else:
728 else:
730 write(self.t("error"))
729 write(self.t("error"))
731
730
732 def create_server(path, name, templates, address, port, use_ipv6 = False,
731 def create_server(repo):
733 accesslog = sys.stdout, errorlog = sys.stderr):
734
732
735 def openlog(opt, default):
733 def openlog(opt, default):
736 if opt and opt != '-':
734 if opt and opt != '-':
737 return open(opt, 'w')
735 return open(opt, 'w')
738 return default
736 return default
739
737
740 u = ui()
738 address = repo.ui.config("web", "address", "")
741 repo = repository(u, path)
739 port = int(repo.ui.config("web", "port", 8000))
742 if not address:
740 use_ipv6 = repo.ui.configbool("web", "ipv6")
743 address = u.config("web", "address", "")
741 accesslog = openlog(repo.ui.config("web", "accesslog", "-"), sys.stdout)
744 if not port:
742 errorlog = openlog(repo.ui.config("web", "errorlog", "-"), sys.stderr)
745 port = int(u.config("web", "port", 8000))
746 if not use_ipv6:
747 use_ipv6 = u.configbool("web", "ipv6")
748
749 accesslog = openlog(accesslog or u.config("web", "accesslog", "-"),
750 sys.stdout)
751 errorlog = openlog(errorlog or u.config("web", "errorlog", "-"),
752 sys.stderr)
753
743
754 import BaseHTTPServer
744 import BaseHTTPServer
755
745
@@ -830,7 +820,7 b' def create_server(path, name, templates,'
830 finally:
820 finally:
831 sys.argv, sys.stdin, sys.stdout, sys.stderr = save
821 sys.argv, sys.stdin, sys.stdout, sys.stderr = save
832
822
833 hg = hgweb(path, name, templates)
823 hg = hgweb(repo)
834 if use_ipv6:
824 if use_ipv6:
835 return IPv6HTTPServer((address, port), hgwebhandler)
825 return IPv6HTTPServer((address, port), hgwebhandler)
836 else:
826 else:
General Comments 0
You need to be logged in to leave comments. Login now