~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/option.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2007-09-01 16:04:44 UTC
  • mfrom: (2745.4.5 changeset)
  • Revision ID: pqm@pqm.ubuntu.com-20070901160444-hcr66zejwyy0jezc
Introduce -c option for diff and status

Show diffs side-by-side

added added

removed removed

Lines of Context:
100
100
    return revs
101
101
 
102
102
 
 
103
def _parse_change_str(revstr):
 
104
    """Parse the revision string and return a tuple with left-most
 
105
    parent of the revision.
 
106
 
 
107
    >>> _parse_change_str('123')
 
108
    (<RevisionSpec_before before:123>, <RevisionSpec_revno 123>)
 
109
    >>> _parse_change_str('123..124')
 
110
    Traceback (most recent call last):
 
111
      ...
 
112
    RangeInChangeOption: Option --change does not accept revision ranges
 
113
    """
 
114
    revs = _parse_revision_str(revstr)
 
115
    if len(revs) > 1:
 
116
        raise errors.RangeInChangeOption()
 
117
    return (revisionspec.RevisionSpec.from_string('before:' + revstr),
 
118
            revs[0])
 
119
 
 
120
 
103
121
def _parse_merge_type(typestring):
104
122
    return get_merge_type(typestring)
105
123
 
129
147
    OPTIONS = {}
130
148
 
131
149
    def __init__(self, name, help='', type=None, argname=None,
132
 
                 short_name=None):
 
150
                 short_name=None, param_name=None):
133
151
        """Make a new command option.
134
152
 
135
153
        name -- regular name of the command, used in the double-dash
136
154
            form and also as the parameter to the command's run() 
137
 
            method.
 
155
            method (unless param_name is specified).
138
156
 
139
157
        help -- help message displayed in command help
140
158
 
142
160
            None (default) if this option doesn't take an argument.
143
161
 
144
162
        argname -- name of option argument, if any
 
163
 
 
164
        param_name -- name of the parameter which will be passed to
 
165
            the command's run() method.
145
166
        """
146
167
        self.name = name
147
168
        self.help = help
152
173
        elif argname is None:
153
174
            argname = 'ARG'
154
175
        self.argname = argname
 
176
        if param_name is None:
 
177
            self._param_name = self.name
 
178
        else:
 
179
            self._param_name = param_name
155
180
 
156
181
    def short_name(self):
157
182
        if self._short_name:
189
214
                              *option_strings)
190
215
 
191
216
    def _optparse_callback(self, option, opt, value, parser):
192
 
        setattr(parser.values, self.name, self.type(value))
 
217
        setattr(parser.values, self._param_name, self.type(value))
193
218
 
194
219
    def iter_switches(self):
195
220
        """Iterate through the list of switches provided by the option
398
423
_global_option('revision',
399
424
               type=_parse_revision_str,
400
425
               short_name='r',
401
 
               help='See \'help revisionspec\' for details.')
 
426
               help='See "help revisionspec" for details.')
 
427
_global_option('change',
 
428
               type=_parse_change_str,
 
429
               short_name='c',
 
430
               param_name='revision',
 
431
               help='Select changes introduced by the specified revision. See also "help revisionspec".')
402
432
_global_option('show-ids',
403
433
               help='Show internal object ids.')
404
434
_global_option('timezone',