From 7d34e8c482012f52a642777eaefbbc6ddacc3aa3 Mon Sep 17 00:00:00 2001 From: Lingchao Xin Date: Fri, 6 Dec 2013 15:41:06 +0800 Subject: [PATCH] Generate packages information from .packages Fixes: #1520 Change-Id: I29f5d1a87bef42e96cb2ecb806b97386427b420a --- snapdiff/image.py | 25 +++++++++++++++++++++++++ snapdiff/utils.py | 18 ++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/snapdiff/image.py b/snapdiff/image.py index f35883a..9ef72e2 100644 --- a/snapdiff/image.py +++ b/snapdiff/image.py @@ -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 + diff --git a/snapdiff/utils.py b/snapdiff/utils.py index 256c371..1159b2d 100644 --- a/snapdiff/utils.py +++ b/snapdiff/utils.py @@ -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) + + -- 2.34.1