diff options
-rwxr-xr-x | cnucnu.py | 3 | ||||
-rw-r--r-- | lib/cnucnu/checkshell.py | 31 | ||||
-rw-r--r-- | lib/cnucnu/package_list.py | 10 |
3 files changed, 40 insertions, 4 deletions
@@ -84,7 +84,10 @@ if __name__ == '__main__': conf = config.Config(options.config_filename) if options.action == "check": + bugzilla_config = conf.get_bugzilla_config() + br = BugzillaReporter(**bugzilla_config) shell = CheckShell() + shell.br = br while True: try: if not shell.cmdloop(): diff --git a/lib/cnucnu/checkshell.py b/lib/cnucnu/checkshell.py index aff06c8..dd39aa5 100644 --- a/lib/cnucnu/checkshell.py +++ b/lib/cnucnu/checkshell.py @@ -27,9 +27,19 @@ class CheckShell(cmd.Cmd): def __init__(self): cmd.Cmd.__init__(self) readline.set_completer_delims(' ') - self.package = Package("", None, None, Repository()) + self.repo = Repository() + self.package = Package("", None, None, self.repo) + self._package_list = None self.prompt_default = " URL:" self.update_prompt() + self.br = None + + @property + def package_list(self): + if not self._package_list: + self._package_list = PackageList(repo=self.repo) + self._package_list.append(self.package) + return self._package_list def update_prompt(self): self.prompt = "%(name)s %(regex)s %(url)s " % self.package @@ -51,11 +61,14 @@ class CheckShell(cmd.Cmd): self.package.url = "FM-DEFAULT" def do_inspect(self, args): - self.package_list = PackageList() try: self.package = self.package_list[args] except KeyError, ke: print ke + + def complete_inspect(self, text, line, begidx, endidx): + package_names = [p.name for p in self.package_list if p.name.startswith(text)] + return package_names def do_regex(self, args): self.package.regex = args @@ -86,8 +99,18 @@ class CheckShell(cmd.Cmd): self.update_prompt() if self.package.url and self.package.regex: try: - print "Versions: ", self.package.upstream_versions - print "Latest: ", self.package.latest_upstream + print "Versions:", self.package.upstream_versions + print "Latest:", self.package.latest_upstream + if self.package.name: + if self.package.status: + status = " %s" % self.package.status + else: + status = "" + print "Repo Version: %s%s" % (self.package.repo_version, status) + if self.package.upstream_newer: + open_bugs = self.br.get_open(self.package) + for bug in open_bugs: + print "Open Bug:", "https://bugzilla.redhat.com/show_bug.cgi?id=%s" % bug.bug_id except Exception, e: print e return stop diff --git a/lib/cnucnu/package_list.py b/lib/cnucnu/package_list.py index 5bc4bbc..85dfd16 100644 --- a/lib/cnucnu/package_list.py +++ b/lib/cnucnu/package_list.py @@ -134,6 +134,15 @@ class Package(object): def repo_newer(self): return self.rpm_diff == 1 + @property + def status(self): + if self.upstream_newer: + return "(outdated)" + elif self.repo_newer: + return "(repo newer)" + else: + return "" + class Repository: def __init__(self, package_list=None, repoid="rawhide-source"): @@ -184,6 +193,7 @@ class PackageList: packages.append(Package(name, regex, url, repo)) self.packages = packages + self.append = self.packages.append def __getitem__(self, key): if isinstance(key, int): |