~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzr.py

  • Committer: mbp at sourcefrog
  • Date: 2005-03-09 07:40:07 UTC
  • Revision ID: mbp@sourcefrog.net-20050309074007-597831f212ecfc90
allow --option=ARG syntax

Show diffs side-by-side

added added

removed removed

Lines of Context:
553
553
    ([], {'version': True})
554
554
    >>> parse_args('bzr status --all'.split())
555
555
    (['status'], {'all': True})
 
556
    >>> parse_args('bzr commit --message=biter'.split())
 
557
    (['commit'], {'message': u'biter'})
556
558
    """
557
559
    args = []
558
560
    opts = {}
563
565
    while it:
564
566
        a = it.next()
565
567
        if a[0] == '-':
 
568
            optarg = None
566
569
            if a[1] == '-':
567
570
                mutter("  got option %r" % a)
568
 
                optname = a[2:]
 
571
                if '=' in a:
 
572
                    optname, optarg = a[2:].split('=', 1)
 
573
                else:
 
574
                    optname = a[2:]
569
575
                if optname not in OPTIONS:
570
576
                    bailout('unknown long option %r' % a)
571
577
            else:
577
583
            if optname in opts:
578
584
                # XXX: Do we ever want to support this, e.g. for -r?
579
585
                bailout('repeated option %r' % a)
 
586
                
580
587
            optargfn = OPTIONS[optname]
581
588
            if optargfn:
582
 
                if not it:
583
 
                    bailout('option %r needs an argument' % a)
584
 
                opts[optname] = optargfn(it.next())
 
589
                if optarg == None:
 
590
                    if not it:
 
591
                        bailout('option %r needs an argument' % a)
 
592
                    else:
 
593
                        optarg = it.next()
 
594
                opts[optname] = optargfn(optarg)
585
595
                mutter("    option argument %r" % opts[optname])
586
596
            else:
587
 
                # takes no option argument
 
597
                if optarg != None:
 
598
                    bailout('option %r takes no argument' % optname)
588
599
                opts[optname] = True
589
 
        elif a[:1] == '-':
590
 
            bailout('unknown short option %r' % a)
591
600
        else:
592
601
            args.append(a)
593
602