diff options
-rwxr-xr-x | gnome-bumpchecker.py | 2 | ||||
-rw-r--r-- | modules/gnome_module.py | 45 |
2 files changed, 44 insertions, 3 deletions
diff --git a/gnome-bumpchecker.py b/gnome-bumpchecker.py index e7ceb16..c9656e9 100755 --- a/gnome-bumpchecker.py +++ b/gnome-bumpchecker.py @@ -25,7 +25,7 @@ if __name__ == '__main__': # Quick versions file parsing release_packages = gnome.generate_data_release() - latest_packages = gnome.generate_data_individual() + latest_packages = gnome.generate_data_individual(release_packages) # Old FTP scraping way: # release_packages, latest_packages = gnome.generate_data_ftp() diff --git a/modules/gnome_module.py b/modules/gnome_module.py index 7c8f613..06fe6d8 100644 --- a/modules/gnome_module.py +++ b/modules/gnome_module.py @@ -1,4 +1,5 @@ # Copyright John N. Laliberte <allanonjl@gentoo.org> +# Copyright Mart Raudsepp <leio@gentoo.org> # LICENSE - GPL2 # vim: set sts=4 sw=4 et tw=0 : @@ -8,6 +9,15 @@ import package_module, clioptions_module DEBUG = False +# TODO: Figure out some better handling of mappings together with package_module +# TODO: package_module has made the reverse mapping of what we need, because we consume the names from release_packages +# TODO: So this reverses it back again for the modules we care for this until a proper fix +name_mapping = { + "cantarell": "cantarell-fonts", + "nm-applet": "network-manager-applet", + "networkmanager": "NetworkManager", +} + class GNOME: def __init__(self, nextrev=False): options = clioptions_module.Options() @@ -49,8 +59,39 @@ class GNOME: print "Warning: Ignoring package %s because parsing of its name or version string '%s' failed" % (components[1], components[2]) return ret - def generate_data_individual(self): - return self.generate_data_release() + def generate_data_individual(self, release_packages): + ret = [] + for pkg in release_packages: + name = pkg.name.split('/')[-1] + if name in name_mapping: + name = name_mapping[name] + data = self.http.get(self.url_base + '/sources/' + name + '/cache.json') + if not data: + print("Warning: Unable to read cache.json for %s" % pkg.name) + continue + data = data.json() + if data[0] != 4: + print("Warning: unknown cache.json version for package %s" % name) + continue + if pkg.major_minor not in data[3]: + print("Warning: can't find latest version for %s-%s" % (name, pkg.major-minor)) + continue + latest = False + # Some modules contain more than LATEST-IS-* for some reason, so we need to iterate and find the correct item instead of [0] (even though it is firsy always, but lets be future-proof) + for tarball in data[3][pkg.major_minor]: + if tarball.startswith('LATEST-IS-'): + latest = tarball[10:] # len('LATEST-IS-') == 10 + break + if not latest: + print("Warning: couldn't find latest version from within cache.json[3]") + continue + latest_pkg = package_module.Package(name + "-" + latest) + if pkg.name and pkg.version: + ret.append(latest_pkg) + else: + print("Warning: Ignoring package %s because parsing of its name or version string '%s' failed" % (name, latest)) + continue + return ret def generate_data_release(self): return self.generate_data_from_versions_markup(self.release_versions_file_path + self.full_release + '/versions') |