From 63a5ccffaba120850b35814986e37c004c012de6 Mon Sep 17 00:00:00 2001 From: Paul Varner Date: Thu, 6 Jan 2011 08:22:07 -0600 Subject: Add gentoolkitNonZeroExit exception This exception should only be used when an error is not fatal and the absence of information means no data was found. The return_code parameter can be used to set the exit value. Have the equery list module when in quiet mode return an exit status of 3. This is needed to prevent 'euse -I' from printing many 'No installed packages matching ...' error messages. --- pym/gentoolkit/equery/list_.py | 6 +++--- pym/gentoolkit/errors.py | 11 ++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'pym') diff --git a/pym/gentoolkit/equery/list_.py b/pym/gentoolkit/equery/list_.py index 8c4b871..92b3c1e 100644 --- a/pym/gentoolkit/equery/list_.py +++ b/pym/gentoolkit/equery/list_.py @@ -19,7 +19,7 @@ from getopt import gnu_getopt, GetoptError import gentoolkit import gentoolkit.pprinter as pp -import gentoolkit.errors as errors +from gentoolkit import errors from gentoolkit.equery import format_options, mod_usage, CONFIG from gentoolkit.helpers import get_installed_cpvs from gentoolkit.helpers import get_bintree_cpvs @@ -193,14 +193,14 @@ def main(input_args): print() # if we are in quiet mode, do not raise GentoolkitNoMatches exception - # TODO: Return a non-zero exit status + # instead we raise GentoolkitNonZeroExit to exit with an exit value of 3 try: matches = query.smart_find(**QUERY_OPTS) except errors.GentoolkitNoMatches: if CONFIG['verbose']: raise else: - continue + raise errors.GentoolkitNonZeroExit(3) # Find duplicate packages if QUERY_OPTS["duplicates"]: diff --git a/pym/gentoolkit/errors.py b/pym/gentoolkit/errors.py index 152f660..15fef24 100644 --- a/pym/gentoolkit/errors.py +++ b/pym/gentoolkit/errors.py @@ -16,7 +16,8 @@ __all__ = ( 'GentoolkitInvalidVersion', 'GentoolkitNoMatches', 'GentoolkitSetNotFound', - 'GentoolkitUnknownKeyword' + 'GentoolkitUnknownKeyword', + 'GentoolkitNonZeroExit' ) # ========== @@ -145,4 +146,12 @@ class GentoolkitUnknownKeyword(GentoolkitException): "'%s', KEYWORDS = '%s'\nUSE flags = '%s'" % (self.query, self.keywords, self.use)) + +class GentoolkitNonZeroExit(GentoolkitException): + """Used to signal, that a non-fatal, no warning error occurred. + The primary use case is for not returning any data.""" + def __init__(self, return_code=1, is_serious=False): + GentoolkitException.__init__(self, is_serious=is_serious) + self.return_code = return_code + # vim: set ts=4 sw=4 tw=79: -- cgit v1.3