D7622: help: get helptext/ data from `resources` module if available
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Sat Dec 14 22:11:19 EST 2019
Closed by commit rHG1390bb81163e: help: get helptext/ data from `resources` module if available (authored by martinvonz).
martinvonz marked an inline comment as done.
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D7622?vs=18684&id=18731
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7622/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7622
AFFECTED FILES
mercurial/defaultrc/__init__.py
mercurial/help.py
mercurial/utils/resourceutil.py
CHANGE DETAILS
diff --git a/mercurial/utils/resourceutil.py b/mercurial/utils/resourceutil.py
--- a/mercurial/utils/resourceutil.py
+++ b/mercurial/utils/resourceutil.py
@@ -35,3 +35,25 @@
datapath = os.path.dirname(pycompat.sysexecutable)
else:
datapath = os.path.dirname(os.path.dirname(pycompat.fsencode(__file__)))
+
+try:
+ import importlib
+
+ # Force loading of the resources module
+ importlib.resources.open_binary
+
+ def open_resource(package, name):
+ package = b'mercurial.' + package
+ return importlib.resources.open_binary(
+ pycompat.sysstr(package), pycompat.sysstr(name)
+ )
+
+
+except AttributeError:
+
+ def _package_path(package):
+ return os.path.join(datapath, *package.split(b'.'))
+
+ def open_resource(package, name):
+ path = os.path.join(_package_path(package), name)
+ return open(path, 'rb')
diff --git a/mercurial/help.py b/mercurial/help.py
--- a/mercurial/help.py
+++ b/mercurial/help.py
@@ -8,7 +8,6 @@
from __future__ import absolute_import
import itertools
-import os
import re
import textwrap
@@ -314,11 +313,11 @@
"""Return a delayed loader for help/topic.txt."""
def loader(ui):
- docdir = os.path.join(resourceutil.datapath, b'helptext')
+ package = b'helptext'
if subdir:
- docdir = os.path.join(docdir, subdir)
- path = os.path.join(docdir, topic + b".txt")
- doc = gettext(util.readfile(path))
+ package = b'helptext' + b'.' + subdir
+ with resourceutil.open_resource(package, topic + b'.txt') as fp:
+ doc = gettext(fp.read())
for rewriter in helphooks.get(topic, []):
doc = rewriter(ui, topic, doc)
return doc
diff --git a/mercurial/defaultrc/__init__.py b/mercurial/defaultrc/__init__.py
new file mode 100644
To: martinvonz, #hg-reviewers, indygreg
Cc: mharbison72, mercurial-devel
More information about the Mercurial-devel
mailing list