##// END OF EJS Templates
dispatch: don't mangle ImportError abort messages...
dispatch: don't mangle ImportError abort messages Previously, Mercurial assumed that the last word of the string representation was the name of the moduled that was imported. This assmption is incorrect, despite being true for the common case of an exception raised by the Python VM. For example, hgsubversion raises an ImportError with a helpful message if the Subversion bindings were not found. The final word of this message is not meaningful on its own, and is never the name of a module. This patch changes the output printed to be a simple stringification of the exception instance. In most cases, this will be `abort: No module named X!' rather than `abort: could not import module X!'. No functionality change; all tests pass.

File last commit:

r10999:38182ed0 default
r11053:59d0d715 stable
Show More
help.py
100 lines | 3.0 KiB | text/x-python | PythonLexer
Matt Mackall
Add basic support for help topics and a dates topic
r3795 # help.py - help data for mercurial
#
# Copyright 2006 Matt Mackall <mpm@selenic.com>
#
Martin Geisler
updated license to be explicit about GPL version 2
r8225 # This software may be used and distributed according to the terms of the
Matt Mackall
Update license to GPLv2+
r10263 # GNU General Public License version 2 or any later version.
Matt Mackall
Add basic support for help topics and a dates topic
r3795
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 from i18n import gettext, _
import sys, os
Benoit Boissinot
remove unused imports
r9678 import extensions
Cédric Duval
help: adding a new help topic about extensions...
r8863
def moduledoc(file):
Cédric Duval
help: more improvements for the extensions topic...
r8879 '''return the top-level python documentation for the given file
Matt Mackall
many, many trivial check-code fixups
r10282 Loosely inspired by pydoc.source_synopsis(), but rewritten to
handle triple quotes and to return the whole text instead of just
the synopsis'''
Cédric Duval
help: adding a new help topic about extensions...
r8863 result = []
line = file.readline()
while line[:1] == '#' or not line.strip():
line = file.readline()
Matt Mackall
many, many trivial check-code fixups
r10282 if not line:
break
Cédric Duval
help: adding a new help topic about extensions...
r8863
start = line[:3]
Matt Mackall
many, many trivial check-code fixups
r10282 if start == '\"\"\"' or start == "\'\'\'":
Cédric Duval
help: adding a new help topic about extensions...
r8863 line = line[3:]
while line:
if line.rstrip().endswith(start):
line = line.split(start)[0]
if line:
result.append(line)
break
elif not line:
return None # unmatched delimiter
result.append(line)
line = file.readline()
else:
return None
return ''.join(result)
Brodie Rao
dispatch: provide help for disabled extensions and commands...
r10364 def listexts(header, exts, maxlength, indent=1):
Cédric Duval
help: more improvements for the extensions topic...
r8879 '''return a text listing of the given extensions'''
if not exts:
return ''
result = '\n%s\n\n' % header
for name, desc in sorted(exts.iteritems()):
Brodie Rao
dispatch: provide help for disabled extensions and commands...
r10364 result += '%s%-*s %s\n' % (' ' * indent, maxlength + 2,
':%s:' % name, desc)
Cédric Duval
help: refactor extensions listing, and show enabled ones in the dedicated topic
r8864 return result
Cédric Duval
help: more improvements for the extensions topic...
r8879 def extshelp():
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 doc = loaddoc('extensions')()
Cédric Duval
help: adding a new help topic about extensions...
r8863
Cédric Duval
extensions: move extensions listing functions from mercurial.help...
r8871 exts, maxlength = extensions.enabled()
Cédric Duval
help: more improvements for the extensions topic...
r8879 doc += listexts(_('enabled extensions:'), exts, maxlength)
Cédric Duval
help: refactor extensions listing, and show enabled ones in the dedicated topic
r8864
Cédric Duval
extensions: move extensions listing functions from mercurial.help...
r8871 exts, maxlength = extensions.disabled()
Cédric Duval
help: more improvements for the extensions topic...
r8879 doc += listexts(_('disabled extensions:'), exts, maxlength)
Cédric Duval
help: adding a new help topic about extensions...
r8863
return doc
Martin Geisler
i18n: mark help strings for translation...
r7013
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 def loaddoc(topic):
"""Return a delayed loader for help/topic.txt."""
Matt Mackall
move environment topic
r3798
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 def loader():
if hasattr(sys, 'frozen'):
module = sys.executable
else:
module = __file__
base = os.path.dirname(module)
Dirkjan Ochtman
help: add a topic on git diffs (issue1352)
r7293
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 for dir in ('.', '..'):
docdir = os.path.join(base, dir, 'help')
if os.path.isdir(docdir):
break
Alexander Solovyov
help: add a topic about some of the templating features
r7677
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 path = os.path.join(docdir, topic + ".txt")
return gettext(open(path).read())
return loader
Alexander Solovyov
help: add a topic about some of the templating features
r7677
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 helptable = (
Martin Geisler
help: add "hg help config" topic...
r9785 (["config"], _("Configuration Files"), loaddoc('config')),
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 (["dates"], _("Date Formats"), loaddoc('dates')),
(["patterns"], _("File Name Patterns"), loaddoc('patterns')),
Matt Mackall
many, many trivial check-code fixups
r10282 (['environment', 'env'], _('Environment Variables'),
loaddoc('environment')),
(['revs', 'revisions'], _('Specifying Single Revisions'),
loaddoc('revisions')),
(['mrevs', 'multirevs'], _('Specifying Multiple Revisions'),
loaddoc('multirevs')),
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 (['diffs'], _('Diff Formats'), loaddoc('diffs')),
Matt Mackall
many, many trivial check-code fixups
r10282 (['templating', 'templates'], _('Template Usage'),
loaddoc('templates')),
Martin Geisler
help: move help topics from mercurial/help.py to help/*.txt...
r9539 (['urls'], _('URL Paths'), loaddoc('urls')),
Cédric Duval
help: more improvements for the extensions topic...
r8879 (["extensions"], _("Using additional features"), extshelp),
Johannes Stezenbach
help: helptable is an ordered collection...
r6654 )