comparison mercurial/commands.py @ 32786:fbe9c4dcc8a0

bisect: improve option validation message
author Brandon McCaig <bamccaig@gmail.com>
date Fri, 09 Jun 2017 20:12:39 -0400
parents 723de0ad3d8b
children cb48dfd9672d
comparison
equal deleted inserted replaced
32785:041d976b662a 32786:fbe9c4dcc8a0
7 7
8 from __future__ import absolute_import 8 from __future__ import absolute_import
9 9
10 import difflib 10 import difflib
11 import errno 11 import errno
12 import itertools
12 import os 13 import os
13 import re 14 import re
14 import sys 15 import sys
15 16
16 from .i18n import _ 17 from .i18n import _
766 good = True 767 good = True
767 elif cmd == "bad": 768 elif cmd == "bad":
768 bad = True 769 bad = True
769 else: 770 else:
770 reset = True 771 reset = True
771 elif extra or good + bad + skip + reset + extend + bool(command) > 1: 772 elif extra:
772 raise error.Abort(_('incompatible arguments')) 773 raise error.Abort(_('incompatible arguments'))
774
775 incompatibles = {
776 '--bad': bad,
777 '--command': bool(command),
778 '--extend': extend,
779 '--good': good,
780 '--reset': reset,
781 '--skip': skip,
782 }
783
784 for left, right in itertools.combinations(sorted(incompatibles), 2):
785 if incompatibles[left] and incompatibles[right]:
786 raise error.Abort(_('%s and %s are incompatible') % (left, right))
773 787
774 if reset: 788 if reset:
775 hbisect.resetstate(repo) 789 hbisect.resetstate(repo)
776 return 790 return
777 791