Mercurial > hg-stable
changeset 45342:735756ecda8c
templater: restructure open_template() a little to prepare for relative paths
I found that it was easier to add support for relative paths after
this restructuring. It also made it easier to explain each case with a
code comment (which I did).
Differential Revision: https://phab.mercurial-scm.org/D8906
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Thu, 06 Aug 2020 10:52:52 -0700 |
parents | 4aa484efc926 |
children | c3376a724e32 |
files | mercurial/templater.py |
diffstat | 1 files changed, 15 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/templater.py Thu Aug 06 09:50:10 2020 -0700 +++ b/mercurial/templater.py Thu Aug 06 10:52:52 2020 -0700 @@ -1091,18 +1091,25 @@ will be read from the mercurial.templates package instead. The returned path will then be the relative path. ''' + # Does the name point directly to a map file? + if os.path.isabs(name): + return name, open(name, mode='rb') + + # Does the name point to a template in the provided templatepath, or + # in mercurial/templates/ if no path was provided? if templatepath is None: templatepath = templatedir() - if templatepath is not None or os.path.isabs(name): + if templatepath is not None: f = os.path.join(templatepath, name) return f, open(f, mode='rb') - else: - name_parts = pycompat.sysstr(name).split('/') - package_name = '.'.join(['mercurial', 'templates'] + name_parts[:-1]) - return ( - name, - resourceutil.open_resource(package_name, name_parts[-1]), - ) + + # Otherwise try to read it using the resources API + name_parts = pycompat.sysstr(name).split('/') + package_name = '.'.join(['mercurial', 'templates'] + name_parts[:-1]) + return ( + name, + resourceutil.open_resource(package_name, name_parts[-1]), + ) def try_open_template(name, templatepath=None):