# HG changeset patch # User Martin von Zweigbergk # Date 1596736372 25200 # Node ID 735756ecda8c5b7cbaabe5460af86882445f2cfb # Parent 4aa484efc926a7aa9a4fa1e6feaf5ebae46f0f10 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 diff -r 4aa484efc926 -r 735756ecda8c mercurial/templater.py --- 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):