]> git.ipfire.org Git - pakfire.git/commitdiff
cli: Catch dependency errors and show a nice message
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 2 Nov 2017 15:24:06 +0000 (16:24 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 2 Nov 2017 15:24:06 +0000 (16:24 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/cli.py
src/pakfire/errors.py

index 635d0d0bb8570578761834e3d64c2a6945805990..9a63cace9f475d6195b588515862835b12339308 100644 (file)
@@ -219,6 +219,26 @@ class Cli(object):
 
                        return 128 + signal.SIGINT
 
+               except DependencyError as e:
+                       self.ui.message(_("One or more dependencies could not been resolved"))
+                       self.ui.message("") # empty line
+
+                       # This exception provides a list of all problems
+                       problems, = e.args
+
+                       # List all problems
+                       for problem in problems:
+                               self.ui.message("  * %s" % problem)
+
+                               self.ui.message("    %s" % _("Possible solutions are:"))
+                               for solution in problem.solutions:
+                                       self.ui.message("    * %s" % solution)
+
+                               # Add another empty line
+                               self.ui.message("")
+
+                       return 4
+
                # Catch all errors and show a user-friendly error message.
                except Error as e:
                        self.ui.message(_("An error has occured when running Pakfire"), level=logging.CRITICAL)
index 6524638c1eabbaec9fc3107ee63fd92b917db4ee..02ea8fa4796e206c7562b0ce49ccd64d2596c1c6 100644 (file)
@@ -21,6 +21,8 @@
 
 from .i18n import _
 
+from ._pakfire import DependencyError
+
 class commandTimeoutExpired(Exception):
        pass # XXX cannot be as is
 
@@ -52,34 +54,6 @@ class ConfigError(Error):
 class DatabaseError(Error):
        pass
 
-class DependencyError(Error):
-       exit_code = 4
-
-       def __init__(self, request):
-               Error.__init__(self)
-
-               # Request object that could not be solved
-               self.request = request
-
-       @property
-       def message(self):
-               lines = [
-                       _("One or more dependencies could not been resolved"),
-                       "", # empty line
-               ]
-
-               for problem in self.request.problems:
-                       lines.append("%s" % problem)
-
-                       lines.append(_("Possible solutions are:"))
-                       for solution in problem.solutions:
-                               lines.append("  %s" % solution)
-
-                       # Add another empty line
-                       lines.append("")
-
-               return "\n".join(lines)
-
 
 class DownloadError(Error):
        message = _("An error occured when pakfire tried to download files.")