1
# Copyright 2006 Canonical Ltd.
3
# This program is free software; you can redistribute it and/or modify
4
# it under the terms of the GNU General Public License as published by
5
# the Free Software Foundation; either version 2 of the License, or
6
# (at your option) any later version.
8
# This program is distributed in the hope that it will be useful,
9
# but WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
# GNU General Public License for more details.
13
# You should have received a copy of the GNU General Public License
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
17
"""Generate ReStructuredText source for manual.
18
Based on manpage generator autodoc_man.py
20
Written by Alexander Belchenko
30
import bzrlib.commands
33
def get_filename(options):
34
"""Provides name of manual"""
35
return "%s_man.txt" % (options.bzr_name)
38
def infogen(options, outfile):
39
"""Create manual in RSTX format"""
43
{ "bzrcmd": options.bzr_name,
44
"datestamp": time.strftime("%Y-%m-%d",tt),
45
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S +0000",tt),
46
"version": bzrlib.__version__,
48
outfile.write(rstx_preamble % params)
49
outfile.write(rstx_head % params)
50
outfile.write(getcommand_list(params))
51
outfile.write(getcommand_help(params))
52
outfile.write(rstx_foot % params)
55
def command_name_list():
56
"""Builds a list of command names from bzrlib"""
57
command_names = bzrlib.commands.builtin_command_names()
62
def getcommand_list (params):
63
"""Builds summary help for command names in RSTX format"""
64
bzrcmd = params["bzrcmd"]
69
for cmd_name in command_name_list():
70
cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
73
cmd_help = cmd_object.help()
75
firstline = cmd_help.split('\n', 1)[0]
76
usage = bzrlib.help.command_usage(cmd_object)
77
tmp = '**%s**\n\t%s\n\n' % (usage, firstline)
80
raise RuntimeError, "Command '%s' has no help text" % (cmd_name)
84
def getcommand_help(params):
85
"""Shows individual options for a bzr command"""
90
for cmd_name in command_name_list():
91
cmd_object = bzrlib.commands.get_cmd_object(cmd_name)
94
output = output + format_command(params, cmd_object, cmd_name)
98
def format_command (params, cmd, name):
99
"""Provides long help for each public command"""
100
usage = bzrlib.help.command_usage(cmd)
101
subsection_header = """
105
""" % (usage, '-'*len(usage))
107
docsplit = cmd.__doc__.split('\n')
108
doc = '\n'.join([' '*4 + docsplit[0]] + docsplit[1:])
111
options = cmd.options()
113
option_str = "\n Options:\n"
114
for option_name, option in sorted(options.items()):
115
l = ' --' + option_name
116
if option.type is not None:
117
l += ' ' + option.argname.upper()
118
short_name = option.short_name()
120
assert len(short_name) == 1
121
l += ', -' + short_name
122
l += (30 - len(l)) * ' ' + option.help
123
# TODO: Split help over multiple lines with
124
# correct indenting and wrapping.
125
wrapped = textwrap.fill(l, initial_indent='',
126
subsequent_indent=30*' ')
127
option_str = option_str + wrapped + '\n'
128
return subsection_header + option_str + "\n" + doc + "\n"
134
rstx_preamble = """.. Large parts of this file are autogenerated from the output of
135
.. %(bzrcmd)s help commands
136
.. %(bzrcmd)s help <cmd>
138
.. Generation time: %(timestamp)s
140
=============================================
141
Man page for %(bzrcmd)s (bazaar-ng)
142
=============================================
156
%(bzrcmd)s - bazaar-ng next-generation distributed version control
160
**%(bzrcmd)s** *command* [ *command_options* ]
164
**%(bzrcmd)s help** *command*
169
bazaar-ng (or **%(bzrcmd)s**) is a project of Canonical to develop
170
an open source distributed version control system that is powerful,
171
friendly, and scalable. Version control means a system
172
that keeps track of previous revisions of software source code
173
or similar information and helps people work on it in teams.
181
Path where **%(bzrcmd)s** is to look for external command.
184
E-Mail address of the user. Overrides default user config.
187
E-Mail address of the user. Overriddes default user config.
192
**On Linux**: ``~/.bazaar/bazaar.conf/``
194
**On Windows**: ``C:\\Documents and Settings\\username\\Application Data\\bazaar\\2.0\\bazaar.conf``
196
Contains the default user config. Only one section, ``[DEFAULT]`` is allowed.
197
A typical default config file may be similiar to::
200
email=John Doe <jdoe@isp.com>
205
http://www.bazaar-vcs.org/