################################################################################
-import os, pg, sys, time, errno, fcntl, tempfile, pwd
+import os, pg, sys, time, errno, fcntl, tempfile, pwd, re
import apt_pkg
import daklib.database
import daklib.utils
Options = None
projectB = None
+re_broken_package = re.compile(r"[a-zA-Z]\w+\s+\-.*")
+
################################################################################
#####################################
# 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]
if type(t[key]) != list:
print "ERROR: Unknown type %s for packages in transition %s." % (type(t[key]), test)
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 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)
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: