~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commands.py

  • Committer: Martin Pool
  • Date: 2005-06-15 03:30:11 UTC
  • Revision ID: mbp@sourcefrog.net-20050615033011-7e48f16f4f8a7541
- short option stacking patch from John A Meinel

Show diffs side-by-side

added added

removed removed

Lines of Context:
1316
1316
    (['status'], {'all': True})
1317
1317
    >>> parse_args('commit --message=biter'.split())
1318
1318
    (['commit'], {'message': u'biter'})
 
1319
    >>> parse_args('log -r 500'.split())
 
1320
    (['log'], {'revision': 500})
 
1321
    >>> parse_args('log -r500:600'.split())
 
1322
    (['log'], {'revision': [500, 600]})
 
1323
    >>> parse_args('log -vr500:600'.split())
 
1324
    (['log'], {'verbose': True, 'revision': [500, 600]})
 
1325
    >>> parse_args('log -rv500:600'.split()) #the r takes an argument
 
1326
    Traceback (most recent call last):
 
1327
    ...
 
1328
    ValueError: invalid literal for int(): v500
1319
1329
    """
1320
1330
    args = []
1321
1331
    opts = {}
1338
1348
                    bailout('unknown long option %r' % a)
1339
1349
            else:
1340
1350
                shortopt = a[1:]
1341
 
                if shortopt not in SHORT_OPTIONS:
1342
 
                    bailout('unknown short option %r' % a)
1343
 
                optname = SHORT_OPTIONS[shortopt]
 
1351
                if shortopt in SHORT_OPTIONS:
 
1352
                    # Multi-character options must have a space to delimit
 
1353
                    # their value
 
1354
                    optname = SHORT_OPTIONS[shortopt]
 
1355
                else:
 
1356
                    # Single character short options, can be chained,
 
1357
                    # and have their value appended to their name
 
1358
                    shortopt = a[1:2]
 
1359
                    if shortopt not in SHORT_OPTIONS:
 
1360
                        # We didn't find the multi-character name, and we
 
1361
                        # didn't find the single char name
 
1362
                        bailout('unknown short option %r' % a)
 
1363
                    optname = SHORT_OPTIONS[shortopt]
 
1364
 
 
1365
                    if a[2:]:
 
1366
                        # There are extra things on this option
 
1367
                        # see if it is the value, or if it is another
 
1368
                        # short option
 
1369
                        optargfn = OPTIONS[optname]
 
1370
                        if optargfn is None:
 
1371
                            # This option does not take an argument, so the
 
1372
                            # next entry is another short option, pack it back
 
1373
                            # into the list
 
1374
                            argv.insert(0, '-' + a[2:])
 
1375
                        else:
 
1376
                            # This option takes an argument, so pack it
 
1377
                            # into the array
 
1378
                            optarg = a[2:]
1344
1379
            
1345
1380
            if optname in opts:
1346
1381
                # XXX: Do we ever want to support this, e.g. for -r?