Patchwork D8899: hgweb: open mapfile using templater.open_template()

login
register
mail settings
Submitter phabricator
Date Aug. 5, 2020, 10:05 p.m.
Message ID <differential-rev-PHID-DREV-emfpobbzwegahb6bgtql-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/47000/
State Superseded
Headers show

Comments

phabricator - Aug. 5, 2020, 10:05 p.m.
martinvonz created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  This will help us read templates from resources in frozen binaries.

REPOSITORY
  rHG Mercurial

BRANCH
  default

REVISION DETAIL
  https://phab.mercurial-scm.org/D8899

AFFECTED FILES
  mercurial/hgweb/hgweb_mod.py
  mercurial/templater.py

CHANGE DETAILS




To: martinvonz, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -1084,14 +1084,15 @@ 
     return path if os.path.isdir(path) else None
 
 
-def open_template(name):
+def open_template(name, templatepath=None):
     '''returns a file-like object for the given template, and its full path
 
     If the name is a relative path and we're in a frozen binary, the template
     will be read from the mercurial.templates package instead. The returned path
     will then be the relative path.
     '''
-    templatepath = templatedir()
+    if templatepath is None:
+        templatepath = templatedir()
     if templatepath is not None or os.path.isabs(name):
         f = os.path.join(templatepath, name)
         try:
diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py
--- a/mercurial/hgweb/hgweb_mod.py
+++ b/mercurial/hgweb/hgweb_mod.py
@@ -82,8 +82,8 @@ 
             locations = (os.path.join(style, b'map'), b'map-' + style, b'map')
 
             for location in locations:
-                mapfile = os.path.join(path, location)
-                if os.path.isfile(mapfile):
+                mapfile, fp = templater.open_template(location, path)
+                if mapfile:
                     return style, mapfile
 
     raise RuntimeError(b"No hgweb templates found in %r" % path)