summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/equery2
-rw-r--r--man/equery.15
-rw-r--r--pym/gentoolkit/equery/list_.py6
-rw-r--r--pym/gentoolkit/errors.py11
4 files changed, 19 insertions, 5 deletions
diff --git a/bin/equery b/bin/equery
index 54c3a07..343f92d 100755
--- a/bin/equery
+++ b/bin/equery
@@ -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: