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
17
17
"""man.py - create man page from built-in bzr help and static text
80
81
cmd_help = cmd_object.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
91
92
def getcommand_help(params):
92
93
"""Shows individual options for a bzr command"""
93
94
output='.SH "COMMAND REFERENCE"\n'
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:
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]
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__)
112
doc = bzrlib.help_topics.help_as_plain_text(cmd.help())
109
115
options = cmd.options()
111
117
option_str = "\nOptions:\n"
112
118
for option_name, option in sorted(options.items()):
113
l = ' --' + option_name
114
if option.type is not None:
115
l += ' ' + option.argname.upper()
116
short_name = option.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'
119
for name, short_name, argname, help in option.iter_switches():
120
if option.is_hidden(name):
123
if argname is not None:
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,
132
option_str = option_str + wrapped + '\n'
133
140
aliases_str += ', '.join(cmd.aliases)
134
141
aliases_str += '\n'
136
return subsection_header + option_str + aliases_str + "\n" + doc + "\n"
144
see_also = cmd.get_see_also()
146
see_also_str += '\nSee also: '
147
see_also_str += ', '.join(see_also)
150
return subsection_header + option_str + aliases_str + see_also_str + "\n" + doc + "\n"
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)
139
159
man_preamble = """\
140
Man page for Bazaar (%(bzrcmd)s)
160
.\\\"Man page for Bazaar (%(bzrcmd)s)
142
162
.\\\" Large parts of this file are autogenerated from the output of
143
163
.\\\" \"%(bzrcmd)s help commands\"
181
is to look for external command.
201
is to look for shell plugin external commands.
184
204
E-Mail address of the user. Overrides default user config.
187
E-Mail address of the user. Overriddes default user config.
207
E-Mail address of the user. Overrides default user config.
190
210
Editor for editing commit messages