summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcnucnu.py3
-rw-r--r--lib/cnucnu/checkshell.py31
-rw-r--r--lib/cnucnu/package_list.py10
3 files changed, 40 insertions, 4 deletions
diff --git a/cnucnu.py b/cnucnu.py
index ffc43ca..3fd1d43 100755
--- a/cnucnu.py
+++ b/cnucnu.py
@@ -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):