~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to __init__.py

Add --plugin switch to selectively include plugins.

This is intended for scenarios where a bash completion script is generated
once but distributed to a number of sifferent bzr setups.  In this case the
list of plugins for which commands are included in the completion function
can be controlled and used to restrict the function to a fixed set of
plugins.  Other aspects of command line completion, in particular registry
values registered by plugins, are not affected by this switch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from meta import __version__
26
26
 
27
27
from bzrlib.commands import Command, register_command
28
 
from bzrlib.option import Option
 
28
from bzrlib.option import Option, ListOption
29
29
 
30
30
class cmd_bash_completion(Command):
31
31
    """Generate a shell function for bash command line completion.
45
45
               help="Generate only the shell function, don't enable it"),
46
46
        Option("debug", type=None, hidden=True,
47
47
               help="Enable shell code useful for debugging"),
 
48
        ListOption("plugin", type=str, argname="name",
 
49
                   # param_name="selected_plugins", # doesn't work, bug #387117
 
50
                   help="Enable completions for the selected plugin"
 
51
                   + " (default: all plugins)"),
48
52
        ]
49
53
 
50
54
    def run(self, **kwargs):
51
55
        import sys
52
56
        from bashcomp import bash_completion_function
 
57
        if 'plugin' in kwargs:
 
58
            # work around bug #387117 which prevents us from using param_name
 
59
            kwargs['selected_plugins'] = kwargs['plugin']
 
60
            del kwargs['plugin']
53
61
        bash_completion_function(sys.stdout, **kwargs)
54
62
 
55
63
register_command(cmd_bash_completion)