~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/doc_generate/autodoc_man.py

  • Committer: Alexander Belchenko
  • Date: 2006-07-30 16:43:12 UTC
  • mto: (1711.2.111 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 1906.
  • Revision ID: bialix@ukr.net-20060730164312-b025fd3ff0cee59e
rename  gpl.txt => COPYING.txt

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005 Canonical Ltd
 
1
# Copyright 2005 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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
32
31
import bzrlib.commands
33
32
 
34
33
 
81
80
        cmd_help = cmd_object.help()
82
81
        if cmd_help:
83
82
            firstline = cmd_help.split('\n', 1)[0]
84
 
            usage = cmd_object._usage()
 
83
            usage = bzrlib.help.command_usage(cmd_object)
85
84
            tmp = '.TP\n.B "%s"\n%s\n' % (usage, firstline)
86
85
            output = output + tmp
87
86
        else:
92
91
def getcommand_help(params):
93
92
    """Shows individual options for a bzr command"""
94
93
    output='.SH "COMMAND REFERENCE"\n'
95
 
    formatted = {}
96
94
    for cmd_name in command_name_list():
97
95
        cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
98
96
        if cmd_object.hidden:
99
97
            continue
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]
 
98
        output = output + format_command(params, cmd_object)
105
99
    return output
106
100
 
107
101
 
108
102
def format_command (params, cmd):
109
103
    """Provides long help for each public command"""
110
 
    subsection_header = '.SS "%s"\n' % (cmd._usage())
 
104
    subsection_header = '.SS "%s"\n' % (bzrlib.help.command_usage(cmd))
111
105
    doc = "%s\n" % (cmd.__doc__)
112
 
    doc = bzrlib.help_topics.help_as_plain_text(cmd.help())
 
106
    docsplit = cmd.__doc__.split('\n')
 
107
    doc = '\n'.join([docsplit[0]] + [line[4:] for line in docsplit[1:]])
113
108
 
114
109
    option_str = ""
115
110
    options = cmd.options()
116
111
    if options:
117
112
        option_str = "\nOptions:\n"
118
113
        for option_name, option in sorted(options.items()):
119
 
            for name, short_name, argname, help in option.iter_switches():
120
 
                if option.is_hidden(name):
121
 
                    continue
122
 
                l = '    --' + name
123
 
                if argname is not None:
124
 
                    l += ' ' + argname
125
 
                if short_name:
126
 
                    l += ', -' + short_name
127
 
                l += (30 - len(l)) * ' ' + (help or '')
128
 
                wrapped = textwrap.fill(l, initial_indent='',
129
 
                    subsequent_indent=30*' ',
130
 
                    break_long_words=False,
131
 
                    )
132
 
                option_str = option_str + wrapped + '\n'       
 
114
            l = '    --' + option_name
 
115
            if option.type is not None:
 
116
                l += ' ' + option.argname.upper()
 
117
            short_name = option.short_name()
 
118
            if short_name:
 
119
                assert len(short_name) == 1
 
120
                l += ', -' + short_name
 
121
            l += (30 - len(l)) * ' ' + option.help
 
122
            # TODO: Split help over multiple lines with
 
123
            # correct indenting and wrapping.
 
124
            wrapped = textwrap.fill(l, initial_indent='',
 
125
                                    subsequent_indent=30*' ')
 
126
            option_str = option_str + wrapped + '\n'       
133
127
 
134
128
    aliases_str = ""
135
129
    if cmd.aliases:
140
134
        aliases_str += ', '.join(cmd.aliases)
141
135
        aliases_str += '\n'
142
136
 
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
    return subsection_header + option_str + aliases_str + "\n" + doc + "\n"
157
138
 
158
139
 
159
140
man_preamble = """\
160
 
.\\\"Man page for Bazaar (%(bzrcmd)s)
 
141
Man page for Bazaar (%(bzrcmd)s)
161
142
.\\\"
162
143
.\\\" Large parts of this file are autogenerated from the output of
163
144
.\\\"     \"%(bzrcmd)s help commands\"
171
152
man_head = """\
172
153
.TH bzr 1 "%(datestamp)s" "%(version)s" "Bazaar"
173
154
.SH "NAME"
174
 
%(bzrcmd)s - Bazaar next-generation distributed version control
 
155
Bazaar (%(bzrcmd)s) - next-generation distributed version control
175
156
.SH "SYNOPSIS"
176
157
.B "%(bzrcmd)s"
177
158
.I "command"
186
167
.B "help"
187
168
.I "command"
188
169
.SH "DESCRIPTION"
189
 
Bazaar (or %(bzrcmd)s) is a project of Canonical to develop an open source
190
 
distributed version control system that is powerful, friendly, and scalable.
191
 
Version control means a system that keeps track of previous revisions
192
 
of software source code or similar information and helps people work on it in teams.
 
170
Bazaar (or
 
171
.B "%(bzrcmd)s"
 
172
) is a project of Canonical to develop an open source distributed version control system that is powerful, friendly, and scalable. Version control means a system that keeps track of previous revisions of software source code or similar information and helps people work on it in teams.
193
173
"""
194
174
 
195
175
man_foot = """\
198
178
.I "BZRPATH"
199
179
Path where
200
180
.B "%(bzrcmd)s"
201
 
is to look for shell plugin external commands.
 
181
is to look for external command.
202
182
.TP
203
 
.I "BZR_EMAIL"
 
183
.I "BZREMAIL"
204
184
E-Mail address of the user. Overrides default user config.
205
185
.TP
206
186
.I "EMAIL"
207
 
E-Mail address of the user. Overrides default user config.
 
187
E-Mail address of the user. Overriddes default user config.
208
188
.TP
209
189
.I "BZR_EDITOR"
210
190
Editor for editing commit messages
220
200
.SH "FILES"
221
201
.TP
222
202
.I "~/.bazaar/bazaar.conf"
223
 
Contains the user's default configuration. The section
 
203
Contains the default user config. At least one section, [DEFAULT] is required.
 
204
A typical default config file may be similiar to:
 
205
.br
 
206
.br
224
207
.B [DEFAULT]
225
 
is used to define general configuration that will be applied everywhere.
226
 
The section
227
 
.B [ALIASES]
228
 
can be used to create command aliases for
229
 
commonly used options.
230
 
 
231
 
A typical config file might look something like:
232
 
 
233
 
.br
234
 
[DEFAULT]
235
 
.br
236
 
email=John Doe <jdoe@isp.com>
237
 
.br
238
 
[ALIASES]
239
 
.br
240
 
commit = commit --strict
241
 
.br
242
 
log10 = log --short -r -10..-1
 
208
.br
 
209
.B email=John Doe <jdoe@isp.com>
243
210
.SH "SEE ALSO"
244
 
.UR http://www.bazaar.canonical.com/
245
 
.BR http://www.bazaar.canonical.com/
 
211
.UR http://www.bazaar-vcs.org/
 
212
.BR http://www.bazaar-vcs.org/
246
213
"""
247
214