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 9975a87db46fc011c9357d179f1d9fe45d621e28 Author: Simon McVittie <[email protected]> Date: Fri Dec 29 10:44:37 2017 +0000 Move make-template CLI to g_d_p.command_line Signed-off-by: Simon McVittie <[email protected]> --- debian/changelog | 1 + game_data_packager/command_line.py | 82 ++++++++++++++++++++++++++++--------- game_data_packager/make_template.py | 25 +---------- run | 14 +------ 4 files changed, 65 insertions(+), 57 deletions(-) diff --git a/debian/changelog b/debian/changelog index 80c30b8..dc218af 100644 --- a/debian/changelog +++ b/debian/changelog @@ -11,6 +11,7 @@ game-data-packager (56) UNRELEASED; urgency=medium - Fix a typo in previous changelog entry [adetiste] - Add missing bug reference for #876321 in previous changelog entry [adetiste] + - `g-d-p make-template` now appears in --help output [smcv] - Make `g-d-p make-template` able to merge new versions into existing games (the result is very rough and will usually need editing, but is much less tedious than doing the merge by hand) [smcv] diff --git a/game_data_packager/command_line.py b/game_data_packager/command_line.py index f195d96..208d747 100644 --- a/game_data_packager/command_line.py +++ b/game_data_packager/command_line.py @@ -20,6 +20,7 @@ import argparse import logging import os import sys +import textwrap import time import zipfile @@ -80,32 +81,37 @@ class TerminalProgress(ProgressCallback): def run_command_line(): logger.debug('Arguments: %r', sys.argv) - # Don't set any defaults on this base parser, because it interferes + # Don't set any defaults on these base parsers, because that interferes # with the ability to recognise the same argument either before or # after the game name. Set them on the Namespace instead. base_parser = argparse.ArgumentParser(prog='game-data-packager', description='Package game files.', add_help=False, argument_default=argparse.SUPPRESS) + game_parser = argparse.ArgumentParser(prog='game-data-packager', + description='Package game files.', + add_help=False, + argument_default=argparse.SUPPRESS, + parents=(base_parser,)) - base_parser.add_argument('--everything', action='store_true', + game_parser.add_argument('--everything', action='store_true', help='Download all possible expansions') - base_parser.add_argument('--package', '-p', action='append', + game_parser.add_argument('--package', '-p', action='append', dest='packages', metavar='PACKAGE', help='Produce this data package (may be repeated)') - base_parser.add_argument('--target-format', + game_parser.add_argument('--target-format', help='Produce packages for this packaging system', choices='arch deb rpm'.split()) - base_parser.add_argument('--target-distro', + game_parser.add_argument('--target-distro', help='Produce packages suitable for this distro') - base_parser.add_argument('--install-method', metavar='METHOD', + game_parser.add_argument('--install-method', metavar='METHOD', dest='install_method', help='Use METHOD (apt, dpkg, gdebi, gdebi-gtk, gdebi-kde) ' + 'to install packages') - base_parser.add_argument('--gain-root-command', metavar='METHOD', + game_parser.add_argument('--gain-root-command', metavar='METHOD', dest='gain_root_command', help='Use METHOD (su, sudo, pkexec) to gain root if needed') @@ -114,37 +120,37 @@ def run_command_line(): # that would rule out the vast majority of its packages: if a game's # data is Free Software, we could put it in main or contrib and not need # g-d-p at all. - base_parser.add_argument('--binary-executables', action='store_true', + game_parser.add_argument('--binary-executables', action='store_true', help='allow installation of executable code that was not built ' + 'from public source code') # Misc options - group = base_parser.add_mutually_exclusive_group() + group = game_parser.add_mutually_exclusive_group() group.add_argument('-i', '--install', action='store_true', help='install the generated package') group.add_argument('-n', '--no-install', action='store_false', dest='install', help='do not install the generated package (requires -d, default)') - base_parser.add_argument('-d', '--destination', metavar='OUTDIR', + game_parser.add_argument('-d', '--destination', metavar='OUTDIR', help='write the generated .%s(s) to OUTDIR' % FORMAT) - group = base_parser.add_mutually_exclusive_group() + group = game_parser.add_mutually_exclusive_group() group.add_argument('-z', '--compress', action='store_true', help='compress generated .%s (default if -d is used)' % FORMAT) group.add_argument('--no-compress', action='store_false', dest='compress', help='do not compress generated .%s (default without -d)' % FORMAT) - group = base_parser.add_mutually_exclusive_group() + group = game_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') - base_parser.add_argument('--save-downloads', metavar='DIR', + game_parser.add_argument('--save-downloads', metavar='DIR', help='save downloaded files to DIR, and look for files there') - group = base_parser.add_mutually_exclusive_group() + group = game_parser.add_mutually_exclusive_group() group.add_argument('--search', action='store_true', default=True, help='look for installed files in Steam and other likely places ' + '(default)') @@ -170,7 +176,7 @@ def run_command_line(): def error(self, message): pass - dumb_parser = DumbParser(parents=(base_parser,),add_help=False) + dumb_parser = DumbParser(parents=(game_parser,),add_help=False) dumb_parser.add_argument('game', type=str, nargs='?') dumb_parser.add_argument('paths', type=str, nargs='*') dumb_parser.add_argument('-h', '--help', action='store_true', dest='h') @@ -195,7 +201,7 @@ def run_command_line(): games = load_games() parser = argparse.ArgumentParser(prog='game-data-packager', - description='Package game files.', parents=(base_parser,), + description='Package game files.', parents=(game_parser,), epilog='Run "game-data-packager GAME --help" to see ' + 'game-specific arguments.') @@ -203,14 +209,14 @@ def run_command_line(): title='supported games', metavar='GAME') for g in sorted(games.keys()): - games[g].add_parser(game_parsers, base_parser) + games[g].add_parser(game_parsers, game_parser) # GOG meta-mode gog_parser = game_parsers.add_parser('gog', help='Package all your GOG.com games at once', description='Automatically package all your GOG.com games', formatter_class=argparse.RawDescriptionHelpFormatter, - parents=(base_parser,)) + parents=(game_parser,)) group = gog_parser.add_mutually_exclusive_group() group.add_argument('--all', action='store_true', default=False, help='show all GOG.com games') @@ -222,13 +228,44 @@ def run_command_line(): help='Package all Steam games at once', description='Automatically package all your Steam games', formatter_class=argparse.RawDescriptionHelpFormatter, - parents=(base_parser,)) + parents=(game_parser,)) group = steam_parser.add_mutually_exclusive_group() group.add_argument('--all', action='store_true', default=False, help='package all Steam games') group.add_argument('--new', action='store_true', default=False, help='package all new Steam games') + mt_parser = game_parsers.add_parser('make-template', + help='Capture details of a new game or update an existing one', + description=textwrap.dedent('''\ + This command collects details of game files in a directory or archive, + so that they can be used for a newly supported game or added to an + existing game. Please send its output to the Debian bug tracking system + as a bug with 'wishlist' severity.\ + '''), + formatter_class=argparse.RawDescriptionHelpFormatter, + parents=(base_parser,)) + mt_parser.add_argument('args', nargs='*', metavar='DEB|DIRECTORY|FILE') + mt_parser.add_argument( + '--strip-path', action='append', dest='strip_paths', default=[], + help='Strip a prefix from all filenames (may be repeated)') + mt_parser.add_argument( + '--base', default=None, help='Base the template on an existing game') + mt_parser.add_argument( + '--template', action='append', dest='templates', default=[], + help='Load pre-generated templates') + mt_parser.add_argument( + '-l', '--lower', action='store_true', dest='lower', + help='make all files lowercase') + mt_parser.add_argument( + '-e', '--execute', action='store_true', dest='execute', + help='run this game through strace and see which files from ' + '/usr/share/games or /usr/local/games are needed') + mt_parser.add_argument( + '-f', '--flacsums', action='store_true', dest='flacsums', + help='compute "flacsums" from .wav files') + args = parser.parse_args() + config = read_config() parsed = argparse.Namespace( binary_executables=False, @@ -267,7 +304,8 @@ def run_command_line(): parser.parse_args(namespace=parsed) logger.debug('parsed command-line arguments into: %r', parsed) - if parsed.destination is None and not parsed.install: + if (parsed.destination is None and not parsed.install and + parsed.shortname != 'make-template'): logger.error('At least one of --install or --destination is required') sys.exit(2) @@ -300,6 +338,10 @@ def run_command_line(): from .gog import (run_gog_meta_mode) run_gog_meta_mode(parsed, games) return + elif parsed.shortname == 'make-template': + import game_data_packager.make_template + game_data_packager.make_template.main(parsed, games) + return elif parsed.shortname in games: game = games[parsed.shortname] else: diff --git a/game_data_packager/make_template.py b/game_data_packager/make_template.py index 8b67691..fb965f0 100644 --- a/game_data_packager/make_template.py +++ b/game_data_packager/make_template.py @@ -16,7 +16,6 @@ # You can find the GPL license text on a Debian system under # /usr/share/common-licenses/GPL-2. -import argparse import logging import os import subprocess @@ -930,29 +929,7 @@ def do_flacsums(destdir, lower): print("\n#processed %i .wav and %i .fla[c] files" % (done_wav, done_flac)) -def main(): - parser = argparse.ArgumentParser( - description='Produce a template for game-data-packager YAML ' + - 'based on an existing .deb file or installed directory', - prog='game-data-packager guess-contents') - parser.add_argument('args', nargs='*', metavar='DEB|DIRECTORY|FILE') - parser.add_argument( - '--strip-path', action='append', dest='strip_paths', default=[], - help='Strip a prefix from all filenames (may be repeated)') - parser.add_argument( - '--base', default=None, help='Base the template on an existing game') - parser.add_argument( - '--template', action='append', dest='templates', default=[], - help='Load pre-generated templates') - parser.add_argument('-l', '--lower', action='store_true', dest='lower', - help='make all files lowercase') - parser.add_argument('-e', '--execute', action='store_true', dest='execute', - help='run this game through strace and see which files from ' - '/usr/share/games or /usr/local/games are needed') - parser.add_argument('-f', '--flacsums', action='store_true', dest='flacsums', - help='compute "flacsums" from .wav files') - args = parser.parse_args() - +def main(args, games): # ./run make-template -e -- scummvm -p /usr/share/games/spacequest1/ sq1 if args.execute: do_one_exec(args.args,args.lower) diff --git a/run b/run index 31c3c0a..3a09546 100755 --- a/run +++ b/run @@ -14,16 +14,4 @@ else fi export PYTHONPATH -if [ $# -eq 0 ]; then - exec python3 -m game_data_packager.command_line -fi - -case "$1" in - 'make-template') - shift - exec python3 -m game_data_packager.make_template "$@" - ;; - *) - exec python3 -m game_data_packager.command_line "$@" - ;; -esac +exec python3 -m game_data_packager.command_line "$@" -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/game-data-packager.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

