~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/option.py

- more refactoring of and tests for option parsing

Show diffs side-by-side

added added

removed removed

Lines of Context:
112
112
    OPTIONS = {}
113
113
    SHORT_OPTIONS = {}
114
114
 
115
 
    def __init__(self, name, help='', type=None):
 
115
    def __init__(self, name, help='', type=None, argname=None):
116
116
        """Make a new command option.
117
117
 
118
118
        name -- regular name of the command, used in the double-dash
123
123
 
124
124
        type -- function called to parse the option argument, or 
125
125
            None (default) if this option doesn't take an argument.
 
126
 
 
127
        argname -- name of option argument, if any
126
128
        """
127
129
        # TODO: perhaps a subclass that automatically does 
128
130
        # --option, --no-option for reversable booleans
129
131
        self.name = name
130
132
        self.help = help
131
133
        self.type = type
 
134
        if type is None:
 
135
            assert argname is None
 
136
        elif argname is None:
 
137
            argname = 'ARG'
 
138
        self.argname = argname
132
139
 
133
140
    def short_name(self):
134
141
        """Return the single character option for this command, if any.
157
164
_global_option('short')
158
165
_global_option('show-ids', 
159
166
               help='show internal object ids')
160
 
_global_option('timezone', type=str)
161
 
_global_option('verbose',)
162
 
##               help='display more information')
 
167
_global_option('timezone', 
 
168
               type=str,
 
169
               help='display timezone as local, original, or utc')
 
170
_global_option('verbose',
 
171
               help='display more information')
163
172
_global_option('version')
164
173
_global_option('email')
165
 
_global_option('unchanged')
166
174
_global_option('update')
167
175
_global_option('long')
168
176
_global_option('root', type=str)