~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to tools/doc_generate/autodoc_man.py

  • Committer: John Arbash Meinel
  • Date: 2009-06-19 19:26:32 UTC
  • mto: This revision was merged to the branch mainline in revision 4466.
  • Revision ID: john@arbash-meinel.com-20090619192632-1a4ntoq61fkhlp2x
Make a note of the 'worst case' for heads.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
                    assert len(short_name) == 1
 
127
                    l += ', -' + short_name
 
128
                l += (30 - len(l)) * ' ' + (help or '')
 
129
                wrapped = textwrap.fill(l, initial_indent='',
 
130
                                        subsequent_indent=30*' ')
 
131
                option_str = option_str + wrapped + '\n'       
126
132
 
127
133
    aliases_str = ""
128
134
    if cmd.aliases:
133
139
        aliases_str += ', '.join(cmd.aliases)
134
140
        aliases_str += '\n'
135
141
 
136
 
    return subsection_header + option_str + aliases_str + "\n" + doc + "\n"
 
142
    see_also_str = ""
 
143
    see_also = cmd.get_see_also()
 
144
    if see_also:
 
145
        see_also_str += '\nSee also: '
 
146
        see_also_str += ', '.join(see_also)
 
147
        see_also_str += '\n'
 
148
 
 
149
    return subsection_header + option_str + aliases_str + see_also_str + "\n" + doc + "\n"
 
150
 
 
151
 
 
152
def format_alias(params, alias, cmd_name):
 
153
    help = '.SS "bzr %s"\n' % alias
 
154
    help += 'Alias for "%s", see "bzr %s".\n' % (cmd_name, cmd_name)
 
155
    return help
137
156
 
138
157
 
139
158
man_preamble = """\
140
 
Man page for Bazaar (%(bzrcmd)s)
 
159
.\\\"Man page for Bazaar (%(bzrcmd)s)
141
160
.\\\"
142
161
.\\\" Large parts of this file are autogenerated from the output of
143
162
.\\\"     \"%(bzrcmd)s help commands\"
178
197
.I "BZRPATH"
179
198
Path where
180
199
.B "%(bzrcmd)s"
181
 
is to look for external command.
 
200
is to look for shell plugin external commands.
182
201
.TP
183
202
.I "BZR_EMAIL"
184
203
E-Mail address of the user. Overrides default user config.
185
204
.TP
186
205
.I "EMAIL"
187
 
E-Mail address of the user. Overriddes default user config.
 
206
E-Mail address of the user. Overrides default user config.
188
207
.TP
189
208
.I "BZR_EDITOR"
190
209
Editor for editing commit messages
200
219
.SH "FILES"
201
220
.TP
202
221
.I "~/.bazaar/bazaar.conf"
203
 
Contains the users default configuration. The section
 
222
Contains the user's default configuration. The section
204
223
.B [DEFAULT]
205
224
is used to define general configuration that will be applied everywhere.
206
225
The section