diff options
| author | Paul Varner <fuzzyray@gentoo.org> | 2011-01-06 08:22:07 -0600 |
|---|---|---|
| committer | Paul Varner <fuzzyray@gentoo.org> | 2011-01-06 09:48:52 -0600 |
| commit | 63a5ccffaba120850b35814986e37c004c012de6 (patch) | |
| tree | 5a113b5c0ce57de5d7064c24567734ca7bd2144f | |
| parent | 8d925c18b9694bff63eae4238eeac342a4589314 (diff) | |
| download | gentoolkit-63a5ccffaba120850b35814986e37c004c012de6.tar.gz | |
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.
| -rwxr-xr-x | bin/equery | 2 | ||||
| -rw-r--r-- | man/equery.1 | 5 | ||||
| -rw-r--r-- | pym/gentoolkit/equery/list_.py | 6 | ||||
| -rw-r--r-- | pym/gentoolkit/errors.py | 11 |
4 files changed, 19 insertions, 5 deletions
@@ -36,6 +36,8 @@ from gentoolkit import equery, errors try: equery.main() +except errors.GentoolkitNonZeroExit as err: + sys.exit(err.return_code) except errors.GentoolkitException as err: if '--debug' in sys.argv or bool(os.getenv('DEBUG', False)): raise diff --git a/man/equery.1 b/man/equery.1 index c912831..8538005 100644 --- a/man/equery.1 +++ b/man/equery.1 @@ -448,7 +448,10 @@ Slot: .br The fourth field, after the colon, is the package's slot. \fB0\fP is the default slot. To find all packages with multiple slots installed, use \fB\-\-duplicates\fP. .P -\fBNote:\fP Because it takes extra processing time to determine the location, mask status and slot, you can speed up output by passing the \fB\-\-quiet\fP global option to \fBequery\fP when you don't care about the extra information. +\fBNote:\fP Because it takes extra processing time to determine the location, mask status and slot, you can speed up output by passing the \fB\-\-quiet\fP global option to \fBequery\fP when you don't care about the extra information. + +\fBNote:\fP Additionally, when using \-\-quiet, if no matches are found, instead of printing an error, the equery list module will return with an exit value of 3. +>>>>>>> 61db505... Add gentoolkitNonZeroExit exception .P .I R "EXAMPLES" ":" 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: |
