From patchwork Wed Jul 22 17:40:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D8791: templater: switch to lower-level config.parse() in _readmapfile() From: phabricator X-Patchwork-Id: 46836 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Wed, 22 Jul 2020 17:40:24 +0000 martinvonz created this revision. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY I hope to modify this code to also work with resources loaded from memory (for PyOxidizer support). For that, we'll need to handle the lookup of relative `%include` path (not joined with the base directory of the containing file). This patch prepares for that by using `config.parse()` instead of `config.read()`, since the latter expects a file in the file system. As it happens, this change also lets us clean up the `config` class to not need the `_includepaths` field. That will happen next. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D8791 AFFECTED FILES mercurial/templater.py CHANGE DETAILS To: martinvonz, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/mercurial/templater.py b/mercurial/templater.py --- a/mercurial/templater.py +++ b/mercurial/templater.py @@ -824,7 +824,13 @@ base = os.path.dirname(mapfile) conf = config.config(includepaths=[templatedir()]) - conf.read(mapfile, remap={b'': b'templates'}) + + def include(rel, abs, remap, sections): + data = util.posixfile(abs, b'rb').read() + conf.parse(abs, data, sections=sections, remap=remap, include=include) + + data = util.posixfile(mapfile, b'rb').read() + conf.parse(mapfile, data, remap={b'': b'templates'}, include=include) cache = {} tmap = {}