~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/help.py

  • Committer: Robert Collins
  • Date: 2005-09-27 07:24:40 UTC
  • mfrom: (1185.1.41)
  • Revision ID: robertc@robertcollins.net-20050927072440-1bf4d99c3e1db5b3
pair programming worx... merge integration and weave

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2004, 2005, 2006 by Canonical Ltd
 
1
# Copyright (C) 2004, 2005 by 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
20
20
# executable files with reasonable names.
21
21
 
22
22
# TODO: `help commands --all` should show hidden commands
23
 
import textwrap
24
23
 
25
24
global_help = \
26
25
"""Bazaar-NG -- a free distributed version-control tool
27
26
http://bazaar-ng.org/
28
27
 
 
28
WARNING: This is an unstable development version.
 
29
         Please keep backups.
 
30
 
29
31
Basic commands:
30
32
 
31
33
  bzr init           makes this directory a versioned branch
110
112
    outfile.write(doc)
111
113
    if doc[-1] != '\n':
112
114
        outfile.write('\n')
113
 
    help_on_command_options(cmd_object, outfile)
114
 
 
115
 
 
116
 
def help_on_command_options(cmd, outfile=None):
117
 
    from bzrlib.option import Option
118
 
    options = cmd.options()
 
115
    
 
116
    help_on_options(cmd_object.takes_options, outfile=None)
 
117
 
 
118
 
 
119
def help_on_options(options, outfile=None):
 
120
    from bzrlib.commands import SHORT_OPTIONS
 
121
    
119
122
    if not options:
120
123
        return
 
124
    
121
125
    if outfile == None:
122
126
        outfile = sys.stdout
 
127
 
123
128
    outfile.write('\noptions:\n')
124
 
    for option_name, option in sorted(options.items()):
125
 
        l = '    --' + option_name
126
 
        if option.type is not None:
127
 
            l += ' ' + option.argname.upper()
128
 
        short_name = option.short_name()
129
 
        if short_name:
130
 
            assert len(short_name) == 1
131
 
            l += ', -' + short_name
132
 
        l += (30 - len(l)) * ' ' + option.help
133
 
        # TODO: split help over multiple lines with correct indenting and 
134
 
        # wrapping
135
 
        wrapped = textwrap.fill(l, initial_indent='', subsequent_indent=30*' ')
136
 
        outfile.write(wrapped + '\n')
 
129
    for on in options:
 
130
        l = '    --' + on
 
131
        for shortname, longname in SHORT_OPTIONS.items():
 
132
            if longname == on:
 
133
                l += ', -' + shortname
 
134
                break
 
135
        outfile.write(l + '\n')
137
136
 
138
137
 
139
138
def help_commands(outfile=None):
159
158
        cmd_help = cmd_object.help()
160
159
        if cmd_help:
161
160
            firstline = cmd_help.split('\n', 1)[0]
162
 
            print >>outfile, '        ' + firstline
 
161
            print >>outfile, '    ' + firstline
163
162