[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[dak/master] make decode_dot_dak use Changes class



Signed-off-by: Mark Hymers <mhy@debian.org>
---
 dak/decode_dot_dak.py |   76 +++----------------------------------
 daklib/changes.py     |   99 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 105 insertions(+), 70 deletions(-)

diff --git a/dak/decode_dot_dak.py b/dak/decode_dot_dak.py
index e6bc45b..54b4ca1 100755
--- a/dak/decode_dot_dak.py
+++ b/dak/decode_dot_dak.py
@@ -28,7 +28,7 @@
 
 import sys
 import apt_pkg
-from daklib import queue
+from daklib.changes import Changes
 from daklib import utils
 
 ################################################################################
@@ -55,77 +55,13 @@ def main():
     if Options["Help"]:
         usage()
 
-    k = queue.Upload(Cnf)
+
     for arg in sys.argv[1:]:
         arg = utils.validate_changes_file_arg(arg,require_changes=-1)
-        k.pkg.changes_file = arg
-        print "%s:" % (arg)
-        k.init_vars()
-        k.update_vars()
-
-        changes = k.pkg.changes
-        print " Changes:"
-        # Mandatory changes fields
-        for i in [ "source", "version", "maintainer", "urgency", "changedby822",
-                   "changedby2047", "changedbyname", "maintainer822",
-                   "maintainer2047", "maintainername", "maintaineremail",
-                   "fingerprint", "changes" ]:
-            print "  %s: %s" % (i.capitalize(), changes[i])
-            del changes[i]
-        # Mandatory changes lists
-        for i in [ "distribution", "architecture", "closes" ]:
-            print "  %s: %s" % (i.capitalize(), " ".join(changes[i].keys()))
-            del changes[i]
-        # Optional changes fields
-        for i in [ "changed-by", "filecontents", "format", "adv id" ]:
-            if changes.has_key(i):
-                print "  %s: %s" % (i.capitalize(), changes[i])
-                del changes[i]
-        print
-        if changes:
-            utils.warn("changes still has following unrecognised keys: %s" % (changes.keys()))
-
-        dsc = k.pkg.dsc
-        print " Dsc:"
-        for i in [ "source", "version", "maintainer", "fingerprint", "uploaders",
-                   "bts changelog" ]:
-            if dsc.has_key(i):
-                print "  %s: %s" % (i.capitalize(), dsc[i])
-                del dsc[i]
-        print
-        if dsc:
-            utils.warn("dsc still has following unrecognised keys: %s" % (dsc.keys()))
-
-        files = k.pkg.files
-        print " Files:"
-        for f in files.keys():
-            print "  %s:" % (f)
-            for i in [ "package", "version", "architecture", "type", "size",
-                       "md5sum", "sha1sum", "sha256sum", "component", "location id",
-                       "source package", "source version", "maintainer", "dbtype",
-                       "files id", "new", "section", "priority", "pool name" ]:
-                if files[f].has_key(i):
-                    print "   %s: %s" % (i.capitalize(), files[f][i])
-                    del files[f][i]
-            if files[f]:
-                utils.warn("files[%s] still has following unrecognised keys: %s" % (f, files[f].keys()))
-        print
-
-        dsc_files = k.pkg.dsc_files
-        print " Dsc Files:"
-        for f in dsc_files.keys():
-            print "  %s:" % (f)
-            # Mandatory fields
-            for i in [ "size", "md5sum" ]:
-                print "   %s: %s" % (i.capitalize(), dsc_files[f][i])
-                del dsc_files[f][i]
-            # Optional fields
-            for i in [ "files id" ]:
-                if dsc_files[f].has_key(i):
-                    print "   %s: %s" % (i.capitalize(), dsc_files[f][i])
-                    del dsc_files[f][i]
-            if dsc_files[f]:
-                utils.warn("dsc_files[%s] still has following unrecognised keys: %s" % (f, dsc_files[f].keys()))
+        k = Changes()
+        k.load_dot_dak(arg)
+        print arg
+        print k
 
 ################################################################################
 
diff --git a/daklib/changes.py b/daklib/changes.py
index 150e7c5..5cd26e2 100755
--- a/daklib/changes.py
+++ b/daklib/changes.py
@@ -287,4 +287,103 @@ class Changes(object):
 
         dump_file.close()
 
+    def unknown_files_fields(self, name):
+        return sorted(list( set(self.files[name].keys()) -
+                            set(CHANGESFIELDS_FILES)))
+
+    def unknown_changes_fields(self):
+        return sorted(list( set(self.changes.keys()) -
+                            set(CHANGESFIELDS_MANDATORY + CHANGESFIELDS_OPTIONAL)))
+
+    def unknown_dsc_fields(self):
+        return sorted(list( set(self.dsc.keys()) -
+                            set(CHANGESFIELDS_DSC)))
+
+    def unknown_dsc_files_fields(self, name):
+        return sorted(list( set(self.dsc_files[name].keys()) -
+                            set(CHANGESFIELDS_DSCFILES_MANDATORY + CHANGESFIELDS_DSCFILES_OPTIONAL)))
+
+    def str_files(self):
+        r = []
+        for name, entry in self.files.items():
+            r.append("  %s:" % (name))
+            for i in CHANGESFIELDS_FILES:
+                if entry.has_key(i):
+                    r.append("   %s: %s" % (i.capitalize(), entry[i]))
+            xfields = self.unknown_files_fields(name)
+            if len(xfields) > 0:
+                r.append("files[%s] still has following unrecognised keys: %s" % (name, ", ".join(xfields)))
+
+        return r
+
+    def str_changes(self):
+        r = []
+        for i in CHANGESFIELDS_MANDATORY:
+            val = self.changes[i]
+            if isinstance(val, list):
+                val = " ".join(val)
+            elif isinstance(val, dict):
+                val = " ".join(val.keys())
+            r.append('  %s: %s' % (i.capitalize(), val))
+
+        for i in CHANGESFIELDS_OPTIONAL:
+            if self.changes.has_key(i):
+                r.append('  %s: %s' % (i.capitalize(), self.changes[i]))
+
+        xfields = self.unknown_changes_fields()
+        if len(xfields) > 0:
+            r.append("Warning: changes still has the following unrecognised fields: %s" % ", ".join(xfields))
+
+        return r
+
+    def str_dsc(self):
+        r = []
+        for i in CHANGESFIELDS_DSC:
+            if self.dsc.has_key(i):
+                r.append('  %s: %s' % (i.capitalize(), self.dsc[i]))
+
+        xfields = self.unknown_dsc_fields()
+        if len(xfields) > 0:
+            r.append("Warning: dsc still has the following unrecognised fields: %s" % ", ".join(xfields))
+
+        return r
+
+    def str_dsc_files(self):
+        r = []
+        for name, entry in self.dsc_files.items():
+            r.append("  %s:" % (name))
+            for i in CHANGESFIELDS_DSCFILES_MANDATORY:
+                r.append("   %s: %s" % (i.capitalize(), entry[i]))
+            for i in CHANGESFIELDS_DSCFILES_OPTIONAL:
+                if entry.has_key(i):
+                    r.append("   %s: %s" % (i.capitalize(), entry[i]))
+            xfields = self.unknown_dsc_files_fields(name)
+            if len(xfields) > 0:
+                r.append("dsc_files[%s] still has following unrecognised keys: %s" % (name, ", ".join(xfields)))
+
+        return r
+
+    def __str__(self):
+        r = []
+
+        r.append(" Changes:")
+        r += self.str_changes()
+
+        r.append("")
+
+        r.append(" Dsc:")
+        r += self.str_dsc()
+
+        r.append("")
+
+        r.append(" Files:")
+        r += self.str_files()
+
+        r.append("")
+
+        r.append(" Dsc Files:")
+        r += self.str_dsc_files()
+
+        return "\n".join(r)
+
 __all__.append('Changes')
-- 
1.5.6.5



Reply to: