/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/help.py

  • Committer: Jelmer Vernooij
  • Date: 2017-06-10 00:21:41 UTC
  • mto: This revision was merged to the branch mainline in revision 6675.
  • Revision ID: jelmer@jelmer.uk-20170610002141-m1z5k7fs8laesa65
Fix import.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
from __future__ import absolute_import
 
18
 
17
19
# TODO: Some way to get a list of external commands (defined by shell
18
20
# scripts) so that they can be included in the help listing as well.
19
21
# It should be enough to just list the plugin directory and look for
22
24
# TODO: `help commands --all` should show hidden commands
23
25
 
24
26
import sys
25
 
import textwrap
26
27
 
27
 
from bzrlib import (
 
28
from . import (
28
29
    commands as _mod_commands,
29
30
    errors,
30
31
    help_topics,
31
32
    osutils,
32
33
    plugin,
 
34
    ui,
 
35
    utextwrap,
33
36
    )
34
37
 
35
38
 
36
39
def help(topic=None, outfile=None):
37
40
    """Write the help for the specific topic to outfile"""
38
41
    if outfile is None:
39
 
        outfile = sys.stdout
 
42
        outfile = ui.ui_factory.make_output_stream()
40
43
 
41
44
    indices = HelpIndices()
42
45
 
44
47
    try:
45
48
        topics = indices.search(topic)
46
49
        shadowed_terms = []
47
 
        for index, topic in topics[1:]:
 
50
        for index, topic_obj in topics[1:]:
48
51
            shadowed_terms.append('%s%s' % (index.prefix,
49
 
                topic.get_help_topic()))
 
52
                topic_obj.get_help_topic()))
50
53
        source = topics[0][1]
51
54
        outfile.write(source.get_help_text(shadowed_terms))
52
55
    except errors.NoHelpTopic:
54
57
            raise
55
58
 
56
59
    if alias is not None:
57
 
        outfile.write("'bzr %s' is an alias for 'bzr %s'.\n" % (topic,
 
60
        outfile.write("'brz %s' is an alias for 'brz %s'.\n" % (topic,
58
61
            " ".join(alias)))
59
62
 
60
63
 
61
64
def help_commands(outfile=None):
62
65
    """List all commands"""
63
66
    if outfile is None:
64
 
        outfile = sys.stdout
 
67
        outfile = ui.ui_factory.make_output_stream()
65
68
    outfile.write(_help_commands_to_text('commands'))
66
69
 
67
70
 
96
99
        else:
97
100
            firstline = ''
98
101
        helpstring = '%-*s %s%s' % (max_name, cmd_name, firstline, plugin_name)
99
 
        lines = textwrap.wrap(
 
102
        lines = utextwrap.wrap(
100
103
            helpstring, subsequent_indent=indent,
101
104
            width=width,
102
105
            break_long_words=False)
135
138
            help_topics.HelpTopicIndex(),
136
139
            _mod_commands.HelpCommandIndex(),
137
140
            plugin.PluginsHelpIndex(),
 
141
            help_topics.ConfigOptionHelpIndex(),
138
142
            ]
139
143
 
140
144
    def _check_prefix_uniqueness(self):
141
145
        """Ensure that the index collection is able to differentiate safely."""
142
 
        prefixes = {}
 
146
        prefixes = set()
143
147
        for index in self.search_path:
144
 
            prefixes.setdefault(index.prefix, []).append(index)
145
 
        for prefix, indices in prefixes.items():
146
 
            if len(indices) > 1:
 
148
            prefix = index.prefix
 
149
            if prefix in prefixes:
147
150
                raise errors.DuplicateHelpPrefix(prefix)
 
151
            prefixes.add(prefix)
148
152
 
149
153
    def search(self, topic):
150
154
        """Search for topic across the help search path.