[game-data-packager] 02/05: Add --download, --no-download command-line arguments
Simon McVittie
smcv at debian.org
Sat Jan 17 18:15:37 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 b61f633f3d350f899fc2df122f3cdde66467f38c
Author: Simon McVittie <smcv at debian.org>
Date: Sat Jan 17 17:57:21 2015 +0000
Add --download, --no-download command-line arguments
---
lib/game_data_packager/__init__.py | 29 +++++++++++++++++++++++++----
lib/game_data_packager/games/lgeneral.py | 4 ++--
2 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/lib/game_data_packager/__init__.py b/lib/game_data_packager/__init__.py
index f3d0e15..ec75ca1 100644
--- a/lib/game_data_packager/__init__.py
+++ b/lib/game_data_packager/__init__.py
@@ -109,6 +109,9 @@ class NoPackagesPossible(Exception):
class DownloadsFailed(Exception):
pass
+class DownloadNotAllowed(Exception):
+ pass
+
class HashedFile(object):
def __init__(self, name):
self.name = name
@@ -1540,7 +1543,7 @@ class GameData(object):
try:
ready = self.prepare_packages(packages,
- build_demos=args.demo)
+ build_demos=args.demo, download=args.download)
except NoPackagesPossible:
logger.error('Unable to complete any packages.')
if self.missing_tools:
@@ -1553,6 +1556,10 @@ class GameData(object):
# what they should have added
self.argument_parser.print_help()
raise SystemExit(1)
+ except DownloadNotAllowed:
+ logger.error('Unable to complete any packages because ' +
+ 'downloading missing files was not allowed.')
+ raise SystemExit(1)
except DownloadsFailed:
# we already logged an error
logger.error('Unable to complete any packages because downloads failed.')
@@ -1576,7 +1583,7 @@ class GameData(object):
if install_debs:
self.install_packages(debs)
- def prepare_packages(self, packages, build_demos=False):
+ def prepare_packages(self, packages, build_demos=False, download=True):
possible = set()
for package in packages:
@@ -1632,14 +1639,20 @@ class GameData(object):
continue
logger.debug('will produce %s', package.name)
- if self.fill_gaps(package=package, download=True,
- log=True) is FillResult.COMPLETE:
+ result = self.fill_gaps(package=package, download=download,
+ log=True)
+ if result is FillResult.COMPLETE:
ready.add(package)
+ elif result is FillResult.DOWNLOAD_NEEDED and not download:
+ logger.warning('As requested, not downloading necessary ' +
+ 'files for %s', package.name)
else:
logger.error('Failed to download necessary files for %s',
package.name)
if not ready:
+ if not download:
+ raise DownloadNotAllowed()
raise DownloadsFailed()
return ready
@@ -1836,6 +1849,13 @@ def run_command_line():
dest='search',
help='only look in paths provided on the command line')
+ group = base_parser.add_mutually_exclusive_group()
+ group.add_argument('--download', action='store_true',
+ help='automatically download necessary files if possible ' +
+ '(default)')
+ group.add_argument('--no-download', action='store_false',
+ dest='download', help='do not download anything')
+
parser = argparse.ArgumentParser(prog='game-data-packager',
description='Package game files.', parents=(base_parser,))
@@ -1850,6 +1870,7 @@ def run_command_line():
parsed = argparse.Namespace(
compress=None,
destination=None,
+ download=True,
install=False,
search=True,
)
diff --git a/lib/game_data_packager/games/lgeneral.py b/lib/game_data_packager/games/lgeneral.py
index d51f962..c76cb36 100644
--- a/lib/game_data_packager/games/lgeneral.py
+++ b/lib/game_data_packager/games/lgeneral.py
@@ -34,14 +34,14 @@ class LGeneralGameData(GameData):
'if necessary)')
return parser
- def prepare_packages(self, packages, build_demos=False):
+ def prepare_packages(self, packages, build_demos=False, download=True):
# don't bother even trying if it isn't going to work
if which('lgc-pg') is None:
logger.error('The "lgc-pg" tool is required for this package.')
raise NoPackagesPossible()
ready = super(LGeneralGameData, self).prepare_packages(packages,
- build_demos=build_demos)
+ build_demos=build_demos, download=download)
# would have raised an exception if not
assert self.packages['lgeneral-data-nonfree'] in 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