summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTill Maas <opensource@till.name>2012-06-04 01:14:52 +0200
committerTill Maas <opensource@till.name>2012-06-04 01:14:52 +0200
commit190a4c34a9ceac17d72ce1c31c608c505a8c9fdc (patch)
tree5ba01b44af78cdf80ab085be8642514e353fb867
parent656dc91b4943132bcef4d31731b5a42aa32615c0 (diff)
downloadcnucnu-190a4c34a9ceac17d72ce1c31c608c505a8c9fdc.tar.gz
cnucnu-190a4c34a9ceac17d72ce1c31c608c505a8c9fdc.tar.xz
cnucnu-190a4c34a9ceac17d72ce1c31c608c505a8c9fdc.zip
Enhance exception handling
-rwxr-xr-xcnucnu.py8
-rw-r--r--cnucnu/errors.py3
-rwxr-xr-xcnucnu/package_list.py5
3 files changed, 14 insertions, 2 deletions
diff --git a/cnucnu.py b/cnucnu.py
index a2f6d3f..e0e1e9b 100755
--- a/cnucnu.py
+++ b/cnucnu.py
@@ -21,7 +21,8 @@ import logging
import sys
import os
-import cnucnu.config
+import cnucnu
+import cnucnu.errors as cc_errors
from cnucnu.config import global_config
from cnucnu.package_list import Repository, PackageList, Package
from cnucnu.checkshell import CheckShell
@@ -49,7 +50,12 @@ class Actions(object):
log.info("checking package '%s'", p.name)
try:
if p.upstream_newer:
+ print "package '%s' outdated (%s < %s)" % (p.name, p.repo_version, p.latest_upstream)
pprint(p.report_outdated(dry_run=args.dry_run))
+ except cc_errors.UpstreamVersionRetrievalError:
+ log.error("Failed to fetch upstream information for package '%s'" % p.name)
+ except cc_errors.PackageNotFoundError, e:
+ log.error(e)
except Exception, e:
log.exception("Exception occured while processing package '%s':\n%s" % (p.name, pp.pformat(e)))
else:
diff --git a/cnucnu/errors.py b/cnucnu/errors.py
index 2bbf7d8..17f71f5 100644
--- a/cnucnu/errors.py
+++ b/cnucnu/errors.py
@@ -28,3 +28,6 @@ class CnuCnuError(Exception):
class UpstreamVersionRetrievalError(CnuCnuError):
Name = "Upstream Version Retrieval Error"
+
+class PackageNotFoundError(CnuCnuError):
+ Name = "Package not found in repository"
diff --git a/cnucnu/package_list.py b/cnucnu/package_list.py
index 34cb1c9..8927c45 100755
--- a/cnucnu/package_list.py
+++ b/cnucnu/package_list.py
@@ -78,7 +78,10 @@ class Repository:
return new_nvr_dict
def package_version(self, package):
- return self.nvr_dict[package.name][0]
+ try:
+ return self.nvr_dict[package.name][0]
+ except KeyError:
+ raise cc_errors.PackageNotFoundError("package '%s' not found in repository '%s' (%s)" % (package.name, self.name, self.path))
def package_release(self, package):
return self.nvr_dict[package.name][1]