[game-data-packager] 07/13: Raise proper exceptions from functions called by run_command_line

Simon McVittie smcv at debian.org
Sat Jan 17 01:20:21 UTC 2015


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to branch master
in repository game-data-packager.

commit 83f5f41e4a2d7c5d1011116f54de129dada98d1a
Author: Simon McVittie <smcv at debian.org>
Date:   Sat Jan 17 00:53:03 2015 +0000

    Raise proper exceptions from functions called by run_command_line
---
 lib/game_data_packager/__init__.py | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py
index 00ab626..b5f5a45 100644
--- a/lib/game_data_packager/__init__.py
+++ b/lib/game_data_packager/__init__.py
@@ -98,6 +98,12 @@ class FillResult(Enum):
 
         return FillResult.IMPOSSIBLE
 
+class NoPackagesPossible(Exception):
+    pass
+
+class DownloadsFailed(Exception):
+    pass
+
 class HashedFile(object):
     def __init__(self, name):
         self.name = name
@@ -1517,8 +1523,20 @@ class GameData(object):
         else:
             packages = set(self.packages.values())
 
-        ready = self.prepare_packages(packages,
-                build_demos=args.demo)
+        try:
+            ready = self.prepare_packages(packages,
+                    build_demos=args.demo)
+        except NoPackagesPossible:
+            logger.error('Unable to complete any packages.')
+            # probably not enough files supplied?
+            # print the help text, maybe that helps the user to determine
+            # what they should have added
+            self.argument_parser.print_help()
+            raise SystemExit(1)
+        except DownloadsFailed:
+            # we already logged an error
+            logger.error('Unable to complete any packages because downloads failed.')
+            raise SystemExit(1)
 
         if args.destination is None:
             destination = self.get_workdir()
@@ -1561,8 +1579,7 @@ class GameData(object):
                                 package.name)
                         possible.add(package)
                     else:
-                        self.argument_parser.print_help()
-                        raise SystemExit(1)
+                        raise NoPackagesPossible()
             else:
                 # If no demo, repeat the process for the first
                 # (hopefully only) full package, so we can log *its* errors.
@@ -1575,12 +1592,9 @@ class GameData(object):
                                     'a bug', package.name)
                             possible.add(package)
                         else:
-                            self.argument_parser.print_help()
-                            sys.exit(1)
+                            raise NoPackagesPossible()
                 else:
-                    self.argument_parser.print_help()
-                    raise SystemExit('Unable to complete any packages. ' +
-                            'Please provide more files or directories.')
+                    raise NoPackagesPossible()
 
         ready = set()
 
@@ -1606,8 +1620,7 @@ class GameData(object):
                         package.name)
 
         if not ready:
-            self.argument_parser.print_help()
-            raise SystemExit(1)
+            raise DownloadsFailed()
 
         return ready
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git



More information about the Pkg-games-commits mailing list