security_tools/tools/ubuntu_package_puller/package_version_history.py

42 lines
1.3 KiB
Python

from launchpadlib.launchpad import Launchpad
from collections import defaultdict
class PackageVersionHistory:
def __init__(self, name, distro_series):
self.name = name
self.distro_series = distro_series
self.launchpad = self.login()
def login(self):
return Launchpad.login_anonymously('just testing', 'production')
def set_ubuntu(self):
return self.launchpad.distributions['ubuntu']
def set_distro_series(self):
ubuntu = self.set_ubuntu()
return ubuntu.getSeries(name_or_version=self.distro_series)
def set_archive(self):
ubuntu = self.set_ubuntu()
return ubuntu.main_archive
def get_published_sources(self):
archive = self.set_archive()
series = self.set_distro_series()
return archive.getPublishedSources(source_name=self.name, distro_series=series)
def package_name_and_version_history(self):
sources = self.get_published_sources()
results = []
for source in sources:
name = source.source_package_name
version = source.source_package_version
results.append((name, version))
d = defaultdict(list)
for k, v in results:
d[k].append(v)
return sorted(d.items())