[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kajongg/sid] src: Option --ruleset now accepts abbreviations
From:       Wolfgang Rohdewald <wolfgang () rohdewald ! de>
Date:       2013-10-31 21:21:03
Message-ID: E1Vbzfr-0002lj-AW () scm ! kde ! org
[Download RAW message or body]

Git commit 209feee84b568db739cef129090bb3761e643e58 by Wolfgang Rohdewald.
Committed on 29/10/2013 at 07:49.
Pushed by wrohdewald into branch 'sid'.

Option --ruleset now accepts abbreviations

which may be any part of the ruleset name (no regex). Check for ambiguity

M  +8    -6    src/kajongg.py
M  +10   -4    src/kajonggtest.py

http://commits.kde.org/kajongg/209feee84b568db739cef129090bb3761e643e58

diff --git a/src/kajongg.py b/src/kajongg.py
index f296946..738166f 100755
--- a/src/kajongg.py
+++ b/src/kajongg.py
@@ -48,13 +48,15 @@ def initRulesets():
             DBHandle.default = None
             sys.exit(0)
         else:
-            for ruleset in rulesets:
-                if ruleset.name == Options.rulesetName:
-                    Options.ruleset = ruleset
-                    break
-            else:
+            matches = list(x for x in rulesets if Options.rulesetName in x.name)
+            if len(matches) != 1:
+                if len(matches) == 0:
+                    msg = 'Ruleset %s is unknown' % Options.rulesetName
+                else:
+                    msg = 'Ruleset %s is ambiguous: %s' % (Options.rulesetName, \
list(x.name for x in matches))  DBHandle.default = None
-                raise SystemExit('Ruleset %s is unknown' % Options.rulesetName)
+                raise SystemExit(msg)
+            Options.ruleset = matches[0]
 
 def defineOptions():
     """this is the KDE way. Compare with kajonggserver.py"""
diff --git a/src/kajonggtest.py b/src/kajonggtest.py
index 77bd5de..3951141 100755
--- a/src/kajonggtest.py
+++ b/src/kajonggtest.py
@@ -268,10 +268,16 @@ def improve_options(options):
     cmd = ['{src}/kajongg.py'.format(src=srcDir()), '--rulesets=']
     knownRulesets = subprocess.Popen(cmd, \
stdout=subprocess.PIPE).communicate()[0].split('\n')  wantedRulesets = \
                options.rulesets.split(',')
-    if any(x not in knownRulesets for x in wantedRulesets):
-        for ruleset in wantedRulesets:
-            if ruleset not in knownRulesets:
-                print 'ruleset', ruleset, 'is not known'
+    wrong = False
+    for ruleset in wantedRulesets:
+        matches = list(x for x in knownRulesets if ruleset in x)
+        if len(matches) == 0:
+            print 'ruleset', ruleset, 'is not known',
+            wrong = True
+        elif len(matches) > 1:
+            print 'ruleset', ruleset, 'is ambiguous:', matches
+            wrong = True
+    if wrong:
         sys.exit(1)
 
     return options


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic