~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/plugin.py

(gz) Fix test failure on alpha by correcting format string for
 gc_chk_sha1_record (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
from bzrlib import osutils
37
37
 
38
38
from bzrlib.lazy_import import lazy_import
 
39
 
39
40
lazy_import(globals(), """
40
41
import imp
41
42
import re
48
49
    errors,
49
50
    trace,
50
51
    )
51
 
from bzrlib.i18n import gettext
52
52
from bzrlib import plugins as _mod_plugins
53
53
""")
54
54
 
 
55
from bzrlib.symbol_versioning import (
 
56
    deprecated_function,
 
57
    deprecated_in,
 
58
    )
 
59
 
55
60
 
56
61
DEFAULT_PLUGIN_PATH = None
57
62
_loaded = False
138
143
        try:
139
144
            name, path = spec.split('@')
140
145
        except ValueError:
141
 
            raise errors.BzrCommandError(gettext(
142
 
                '"%s" is not a valid <plugin_name>@<plugin_path> description ')
 
146
            raise errors.BzrCommandError(
 
147
                '"%s" is not a valid <plugin_name>@<plugin_path> description '
143
148
                % spec)
144
149
        specs.append((name, path))
145
150
    return specs
273
278
    """Load bzrlib plugins.
274
279
 
275
280
    The environment variable BZR_PLUGIN_PATH is considered a delimited
276
 
    set of paths to look through. Each entry is searched for `*.py`
 
281
    set of paths to look through. Each entry is searched for *.py
277
282
    files (and whatever other extensions are used in the platform,
278
 
    such as `*.pyd`).
 
283
    such as *.pyd).
279
284
 
280
285
    load_from_path() provides the underlying mechanism and is called with
281
286
    the default directory list to provide the normal behaviour.
446
451
    return result
447
452
 
448
453
 
449
 
def format_concise_plugin_list():
450
 
    """Return a string holding a concise list of plugins and their version.
451
 
    """
452
 
    items = []
453
 
    for name, a_plugin in sorted(plugins().items()):
454
 
        items.append("%s[%s]" %
455
 
            (name, a_plugin.__version__))
456
 
    return ', '.join(items)
457
 
 
458
 
 
459
 
 
460
454
class PluginsHelpIndex(object):
461
455
    """A help index that returns help topics for plugins."""
462
456
 
507
501
            result = self.module.__doc__
508
502
        if result[-1] != '\n':
509
503
            result += '\n'
510
 
        from bzrlib import help_topics
511
 
        result += help_topics._format_see_also(additional_see_also)
 
504
        # there is code duplicated here and in bzrlib/help_topic.py's
 
505
        # matching Topic code. This should probably be factored in
 
506
        # to a helper function and a common base class.
 
507
        if additional_see_also is not None:
 
508
            see_also = sorted(set(additional_see_also))
 
509
        else:
 
510
            see_also = None
 
511
        if see_also:
 
512
            result += 'See also: '
 
513
            result += ', '.join(see_also)
 
514
            result += '\n'
512
515
        return result
513
516
 
514
517
    def get_help_topic(self):
515
 
        """Return the module help topic: its basename."""
 
518
        """Return the modules help topic - its __name__ after bzrlib.plugins.."""
516
519
        return self.module.__name__[len('bzrlib.plugins.'):]
517
520
 
518
521