~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/doc_generate/autodoc_man.py

  • Committer: John Arbash Meinel
  • Date: 2009-07-06 18:59:24 UTC
  • mto: This revision was merged to the branch mainline in revision 4522.
  • Revision ID: john@arbash-meinel.com-20090706185924-qlhn1j607117lgdj
Start implementing an Annotator.add_special_text functionality.

The Python implementation supports it. Basically, it is meant to allow things
like WT and PreviewTree to insert the 'current' content into the graph, so that
we can get local modifications into the annotations.
There is also some work here to get support for texts that are already cached
in the annotator. So that we avoid extracting them, and can shortcut the
history.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2005 Canonical Ltd.
 
1
# Copyright (C) 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., 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()
110
116
    if 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()
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'       
 
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'       
126
133
 
127
134
    aliases_str = ""
128
135
    if cmd.aliases:
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\"
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