]> git.decadent.org.uk Git - dak.git/blobdiff - dak/transitions.py
Fix case of an empty transitions file and accept debian native versions in transitions
[dak.git] / dak / transitions.py
index fb72777eff2712fc3d4dfed589f5ef134b48f14c..1082fa7c9821fb00864242053e3199e5ccba8211 100755 (executable)
@@ -112,6 +112,16 @@ def load_transitions(trans_file):
 
     # lets do further validation here
     checkkeys = ["source", "reason", "packages", "new", "rm"]
+
+    # If we get an empty definition - we just have nothing to check, no transitions defined
+    if type(trans) != dict:
+        # This can be anything. We could have no transitions defined. Or someone totally fucked up the
+        # file, adding stuff in a way we dont know or want. Then we set it empty - and simply have no
+        # transitions anymore. User will see it in the information display after he quit the editor and
+        # could fix it
+        trans = ""
+        return trans
+
     for test in trans:
         t = trans[test]
 
@@ -127,17 +137,16 @@ def load_transitions(trans_file):
                 if type(t[key]) != list:
                     print "ERROR: Unknown type %s for packages in transition %s." % (type(t[key]), test)
                     failure = True
-                if re_broken_package.match(key):
-                    # Someone had a space too much (or not enough), we have something looking like
-                    # "package1 - package2" now.
-                    print "ERROR: Invalid indentation of package list in transition %s, around package(s): %s" % (test, key)
-                    failure = True
                 try:
                     for package in t["packages"]:
                         if type(package) != str:
                             print "ERROR: Packages list contains invalid type %s (as %s) in transition %s" % (type(package), package, test)
                             failure = True
-                        if 
+                        if re_broken_package.match(package):
+                            # Someone had a space too much (or not enough), we have something looking like
+                            # "package1 - package2" now.
+                            print "ERROR: Invalid indentation of package list in transition %s, around package(s): %s" % (test, package)
+                            failure = True
                 except TypeError:
                     # In case someone has an empty packages list
                     print "ERROR: No packages defined in transition %s" % (test)
@@ -145,8 +154,11 @@ def load_transitions(trans_file):
                     continue
 
             elif type(t[key]) != str:
-                print "ERROR: Unknown type %s for key %s in transition %s" % (type(t[key]), key, test)
-                failure = True
+                if t[key] == "new" and type(t[key]) == int:
+                    # Ok, debian native version
+                else:
+                    print "ERROR: Unknown type %s for key %s in transition %s" % (type(t[key]), key, test)
+                    failure = True
 
         # And now the other way round - are all our keys defined?
         for key in checkkeys: