~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/doc_generate/autodoc_man.py

  • Committer: Robert Collins
  • Date: 2010-05-06 23:54:05 UTC
  • mto: This revision was merged to the branch mainline in revision 5223.
  • Revision ID: robertc@robertcollins.net-20100506235405-wii4elupfhzl3jvy
Add __str__ to the new helper classes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2005 Canonical Ltd.
 
1
# Copyright (C) 2005-2010 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
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""man.py - create man page from built-in bzr help and static text
18
18
 
28
28
 
29
29
import bzrlib
30
30
import bzrlib.help
 
31
import bzrlib.help_topics
31
32
import bzrlib.commands
32
33
 
33
34
 
80
81
        cmd_help = cmd_object.help()
81
82
        if cmd_help:
82
83
            firstline = cmd_help.split('\n', 1)[0]
83
 
            usage = bzrlib.help.command_usage(cmd_object)
 
84
            usage = cmd_object._usage()
84
85
            tmp = '.TP\n.B "%s"\n%s\n' % (usage, firstline)
85
86
            output = output + tmp
86
87
        else:
91
92
def getcommand_help(params):
92
93
    """Shows individual options for a bzr command"""
93
94
    output='.SH "COMMAND REFERENCE"\n'
 
95
    formatted = {}
94
96
    for cmd_name in command_name_list():
95
97
        cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
96
98
        if cmd_object.hidden:
97
99
            continue
98
 
        output = output + format_command(params, cmd_object)
 
100
        formatted[cmd_name] = format_command(params, cmd_object)
 
101
        for alias in cmd_object.aliases:
 
102
            formatted[alias] = format_alias(params, alias, cmd_name)
 
103
    for cmd_name in sorted(formatted):
 
104
        output += formatted[cmd_name]
99
105
    return output
100
106
 
101
107
 
102
108
def format_command (params, cmd):
103
109
    """Provides long help for each public command"""
104
 
    subsection_header = '.SS "%s"\n' % (bzrlib.help.command_usage(cmd))
 
110
    subsection_header = '.SS "%s"\n' % (cmd._usage())
105
111
    doc = "%s\n" % (cmd.__doc__)
106
 
    doc = cmd.help()
 
112
    doc = bzrlib.help_topics.help_as_plain_text(cmd.help())
107
113
 
108
114
    option_str = ""
109
115
    options = cmd.options()
111
117
        option_str = "\nOptions:\n"
112
118
        for option_name, option in sorted(options.items()):
113
119
            for name, short_name, argname, help in option.iter_switches():
 
120
                if option.is_hidden(name):
 
121
                    continue
114
122
                l = '    --' + name
115
123
                if argname is not None:
116
124
                    l += ' ' + argname
117
125
                if short_name:
118
 
                    assert len(short_name) == 1
119
126
                    l += ', -' + short_name
120
 
                l += (30 - len(l)) * ' ' + help
121
 
                # TODO: Split help over multiple lines with
122
 
                # correct indenting and wrapping.
 
127
                l += (30 - len(l)) * ' ' + (help or '')
123
128
                wrapped = textwrap.fill(l, initial_indent='',
124
 
                                        subsequent_indent=30*' ')
 
129
                    subsequent_indent=30*' ',
 
130
                    break_long_words=False,
 
131
                    )
125
132
                option_str = option_str + wrapped + '\n'       
126
133
 
127
134
    aliases_str = ""
133
140
        aliases_str += ', '.join(cmd.aliases)
134
141
        aliases_str += '\n'
135
142
 
136
 
    return subsection_header + option_str + aliases_str + "\n" + doc + "\n"
 
143
    see_also_str = ""
 
144
    see_also = cmd.get_see_also()
 
145
    if see_also:
 
146
        see_also_str += '\nSee also: '
 
147
        see_also_str += ', '.join(see_also)
 
148
        see_also_str += '\n'
 
149
 
 
150
    return subsection_header + option_str + aliases_str + see_also_str + "\n" + doc + "\n"
 
151
 
 
152
 
 
153
def format_alias(params, alias, cmd_name):
 
154
    help = '.SS "bzr %s"\n' % alias
 
155
    help += 'Alias for "%s", see "bzr %s".\n' % (cmd_name, cmd_name)
 
156
    return help
137
157
 
138
158
 
139
159
man_preamble = """\
140
 
Man page for Bazaar (%(bzrcmd)s)
 
160
.\\\"Man page for Bazaar (%(bzrcmd)s)
141
161
.\\\"
142
162
.\\\" Large parts of this file are autogenerated from the output of
143
163
.\\\"     \"%(bzrcmd)s help commands\"
151
171
man_head = """\
152
172
.TH bzr 1 "%(datestamp)s" "%(version)s" "Bazaar"
153
173
.SH "NAME"
154
 
Bazaar (%(bzrcmd)s) - next-generation distributed version control
 
174
%(bzrcmd)s - Bazaar next-generation distributed version control
155
175
.SH "SYNOPSIS"
156
176
.B "%(bzrcmd)s"
157
177
.I "command"
178
198
.I "BZRPATH"
179
199
Path where
180
200
.B "%(bzrcmd)s"
181
 
is to look for external command.
 
201
is to look for shell plugin external commands.
182
202
.TP
183
203
.I "BZR_EMAIL"
184
204
E-Mail address of the user. Overrides default user config.
185
205
.TP
186
206
.I "EMAIL"
187
 
E-Mail address of the user. Overriddes default user config.
 
207
E-Mail address of the user. Overrides default user config.
188
208
.TP
189
209
.I "BZR_EDITOR"
190
210
Editor for editing commit messages
200
220
.SH "FILES"
201
221
.TP
202
222
.I "~/.bazaar/bazaar.conf"
203
 
Contains the users default configuration. The section
 
223
Contains the user's default configuration. The section
204
224
.B [DEFAULT]
205
225
is used to define general configuration that will be applied everywhere.
206
226
The section
221
241
.br
222
242
log10 = log --short -r -10..-1
223
243
.SH "SEE ALSO"
224
 
.UR http://www.bazaar-vcs.org/
225
 
.BR http://www.bazaar-vcs.org/
 
244
.UR http://www.bazaar.canonical.com/
 
245
.BR http://www.bazaar.canonical.com/
226
246
"""
227
247