Generate packages information from .packages
authorLingchao Xin <lingchaox.xin@intel.com>
Fri, 6 Dec 2013 07:41:06 +0000 (15:41 +0800)
committerLingchao Xin <lingchaox.xin@intel.com>
Fri, 6 Dec 2013 07:55:11 +0000 (15:55 +0800)
Fixes: #1520
Change-Id: I29f5d1a87bef42e96cb2ecb806b97386427b420a

snapdiff/image.py
snapdiff/utils.py

index f35883a0a7ce5d6fd956c0a9a4398d8f56d806e8..9ef72e22f7977d7d6228c96ff29465455a79c2ce 100644 (file)
@@ -1,3 +1,5 @@
+from .utils import JsonDict
+
 from bs4 import BeautifulSoup
 import difflib
 import glob
@@ -38,3 +40,26 @@ def ks_diff(old, new):
             tofile=ks_new[0]):
         yield line
 
+def packages(url):
+    content = _get_file(url, suffix='.packages')
+
+    packages_info = {}
+
+    for line in content[1]:
+        if line.strip():
+            name_arch, version, vcs = line.strip().split()
+            name = name_arch.split('.')[0]
+            packages_info[name] = []
+            package_info = JsonDict()
+            package_info.name = name
+            package_info.version = JsonDict()
+            ver, epoch_rel = version.split('-')
+            epoch, rel = epoch_rel.split('.')
+            package_info.version.epoch = epoch
+            package_info.version.ver = ver
+            package_info.version.rel = rel
+            package_info.version.vcs = vcs
+            packages_info[name].append(package_info)
+
+    return packages_info
+
index 256c371594427ffe9fb49c606b2e50eeed63a3d4..1159b2d847f8e56817006ef114c5a857f736e34b 100644 (file)
@@ -84,3 +84,21 @@ def xml2obj(src):
         xml.sax.parse(src, builder)
     return builder.root._attrs.values()[0]
 
+
+class JsonDict(dict):
+    """Dictionary json object."""
+
+    def __init__(self):
+        super(JsonDict, self).__init__()
+
+    def __repr__(self):
+        items = self.__dict__.items()
+        return u'{%s}' % ', '.join([u'%s:%s' % (k, repr(v)) for k, v in items])
+
+    def __getitem__(self, key):
+        return self.__dict__.get(key, None)
+
+    def get(self, key, default=None):
+        return self.__dict__.get(key, default)
+
+