~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/doc_generate/autodoc_man.py

  • Committer: Aaron Bentley
  • Date: 2006-06-10 22:13:45 UTC
  • mto: This revision was merged to the branch mainline in revision 1766.
  • Revision ID: abentley@panoramicfeedback.com-20060610221345-b540e12c9702ad8f
Hide diffs for old revisions in bundles

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
# it under the terms of the GNU General Public License as published by
5
5
# the Free Software Foundation; either version 2 of the License, or
6
6
# (at your option) any later version.
7
 
#
 
7
 
8
8
# This program is distributed in the hope that it will be useful,
9
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
11
# GNU General Public License for more details.
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
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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:
102
101
 
103
102
def format_command (params, cmd):
104
103
    """Provides long help for each public command"""
105
 
    subsection_header = '.SS "%s"\n' % (cmd._usage())
 
104
    subsection_header = '.SS "%s"\n' % (bzrlib.help.command_usage(cmd))
106
105
    doc = "%s\n" % (cmd.__doc__)
107
 
    doc = bzrlib.help_topics.help_as_plain_text(cmd.help())
108
 
 
 
106
    docsplit = cmd.__doc__.split('\n')
 
107
    doc = '\n'.join([docsplit[0]] + [line[4:] for line in docsplit[1:]])
109
108
    option_str = ""
110
109
    options = cmd.options()
111
110
    if options:
112
111
        option_str = "\nOptions:\n"
113
112
        for option_name, option in sorted(options.items()):
114
 
            for name, short_name, argname, help in option.iter_switches():
115
 
                if option.is_hidden(name):
116
 
                    continue
117
 
                l = '    --' + name
118
 
                if argname is not None:
119
 
                    l += ' ' + argname
120
 
                if short_name:
121
 
                    assert len(short_name) == 1
122
 
                    l += ', -' + short_name
123
 
                l += (30 - len(l)) * ' ' + (help or '')
124
 
                wrapped = textwrap.fill(l, initial_indent='',
125
 
                                        subsequent_indent=30*' ')
126
 
                option_str = option_str + wrapped + '\n'       
127
 
 
128
 
    aliases_str = ""
129
 
    if cmd.aliases:
130
 
        if len(cmd.aliases) > 1:
131
 
            aliases_str += '\nAliases: '
132
 
        else:
133
 
            aliases_str += '\nAlias: '
134
 
        aliases_str += ', '.join(cmd.aliases)
135
 
        aliases_str += '\n'
136
 
 
137
 
    see_also_str = ""
138
 
    see_also = cmd.get_see_also()
139
 
    if see_also:
140
 
        see_also_str += '\nSee also: '
141
 
        see_also_str += ', '.join(see_also)
142
 
        see_also_str += '\n'
143
 
 
144
 
    return subsection_header + option_str + aliases_str + see_also_str + "\n" + doc + "\n"
 
113
            l = '    --' + option_name
 
114
            if option.type is not None:
 
115
                l += ' ' + option.argname.upper()
 
116
            short_name = option.short_name()
 
117
            if short_name:
 
118
                assert len(short_name) == 1
 
119
                l += ', -' + short_name
 
120
            l += (30 - len(l)) * ' ' + option.help
 
121
            # TODO: Split help over multiple lines with
 
122
            # correct indenting and wrapping.
 
123
            wrapped = textwrap.fill(l, initial_indent='',
 
124
                                    subsequent_indent=30*' ')
 
125
            option_str = option_str + wrapped + '\n'       
 
126
    return subsection_header + option_str + "\n" + doc + "\n"
145
127
 
146
128
 
147
129
man_preamble = """\
148
 
.\\\"Man page for Bazaar (%(bzrcmd)s)
 
130
Man page for %(bzrcmd)s (bazaar-ng)
149
131
.\\\"
150
132
.\\\" Large parts of this file are autogenerated from the output of
151
133
.\\\"     \"%(bzrcmd)s help commands\"
157
139
 
158
140
 
159
141
man_head = """\
160
 
.TH bzr 1 "%(datestamp)s" "%(version)s" "Bazaar"
 
142
.TH bzr 1 "%(datestamp)s" "%(version)s" "bazaar-ng"
161
143
.SH "NAME"
162
 
Bazaar (%(bzrcmd)s) - next-generation distributed version control
 
144
%(bzrcmd)s - bazaar-ng next-generation distributed version control
163
145
.SH "SYNOPSIS"
164
146
.B "%(bzrcmd)s"
165
147
.I "command"
174
156
.B "help"
175
157
.I "command"
176
158
.SH "DESCRIPTION"
177
 
Bazaar (or %(bzrcmd)s) is a project of Canonical to develop an open source
178
 
distributed version control system that is powerful, friendly, and scalable.
179
 
Version control means a system that keeps track of previous revisions
180
 
of software source code or similar information and helps people work on it in teams.
 
159
bazaar-ng (or
 
160
.B "%(bzrcmd)s"
 
161
) 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.
181
162
"""
182
163
 
183
164
man_foot = """\
186
167
.I "BZRPATH"
187
168
Path where
188
169
.B "%(bzrcmd)s"
189
 
is to look for shell plugin external commands.
 
170
is to look for external command.
190
171
.TP
191
 
.I "BZR_EMAIL"
 
172
.I "BZREMAIL"
192
173
E-Mail address of the user. Overrides default user config.
193
174
.TP
194
175
.I "EMAIL"
195
 
E-Mail address of the user. Overrides default user config.
196
 
.TP
197
 
.I "BZR_EDITOR"
198
 
Editor for editing commit messages
199
 
.TP
200
 
.I "EDITOR"
201
 
Editor for editing commit messages
202
 
.TP
203
 
.I "BZR_PLUGIN_PATH"
204
 
Paths where bzr should look for plugins
205
 
.TP
206
 
.I "BZR_HOME"
207
 
Home directory for bzr
 
176
E-Mail address of the user. Overriddes default user config.
208
177
.SH "FILES"
209
178
.TP
210
 
.I "~/.bazaar/bazaar.conf"
211
 
Contains the user's default configuration. The section
 
179
.I "~/.bazaar/bazaar.conf/"
 
180
Contains the default user config. Only one section, [DEFAULT] is allowed. A 
 
181
typical default config file may be similiar to:
 
182
.br
 
183
.br
212
184
.B [DEFAULT]
213
 
is used to define general configuration that will be applied everywhere.
214
 
The section
215
 
.B [ALIASES]
216
 
can be used to create command aliases for
217
 
commonly used options.
218
 
 
219
 
A typical config file might look something like:
220
 
 
221
 
.br
222
 
[DEFAULT]
223
 
.br
224
 
email=John Doe <jdoe@isp.com>
225
 
.br
226
 
[ALIASES]
227
 
.br
228
 
commit = commit --strict
229
 
.br
230
 
log10 = log --short -r -10..-1
 
185
.br
 
186
.B email=John Doe <jdoe@isp.com>
231
187
.SH "SEE ALSO"
232
188
.UR http://www.bazaar-vcs.org/
233
189
.BR http://www.bazaar-vcs.org/