From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id C581B13800E for ; Thu, 2 Aug 2012 15:14:54 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 942C7E0716; Thu, 2 Aug 2012 15:14:22 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 54A79E0716 for ; Thu, 2 Aug 2012 15:14:22 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id B2D761B4058 for ; Thu, 2 Aug 2012 15:14:21 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 98F86E543F for ; Thu, 2 Aug 2012 15:14:18 +0000 (UTC) From: "André Erdmann" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "André Erdmann" Message-ID: <1343920149.dbd601765440a1f735ead40c89c2c02d64c07af3.dywi@gentoo> Subject: [gentoo-commits] proj/R_overlay:master commit in: /, roverlay/ X-VCS-Repository: proj/R_overlay X-VCS-Files: roverlay.py roverlay/argutil.py X-VCS-Directories: / roverlay/ X-VCS-Committer: dywi X-VCS-Committer-Name: André Erdmann X-VCS-Revision: dbd601765440a1f735ead40c89c2c02d64c07af3 X-VCS-Branch: master Date: Thu, 2 Aug 2012 15:14:18 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 161162f7-cf66-4436-a6eb-f84d10dd24e5 X-Archives-Hash: 28b6e20f6d41c31bbbd6fe605bf62b81 commit: dbd601765440a1f735ead40c89c2c02d64c07af3 Author: André Erdmann mailerd de> AuthorDate: Thu Aug 2 15:09:09 2012 +0000 Commit: André Erdmann mailerd de> CommitDate: Thu Aug 2 15:09:09 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=dbd60176 main script, argutil: command_map --- roverlay.py | 4 ++-- roverlay/argutil.py | 38 ++++++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/roverlay.py b/roverlay.py index 3297325..bd250ea 100755 --- a/roverlay.py +++ b/roverlay.py @@ -62,8 +62,8 @@ COMMAND_DESCRIPTION = { commands, config_file, additional_config, extra_opts = \ roverlay.argutil.parse_argv ( - CMD_DESC=COMMAND_DESCRIPTION, - DEFAULT_CONFIG="R-overlay.conf" + command_map=COMMAND_DESCRIPTION, + default_config_file="R-overlay.conf" ) OPTION = extra_opts.get diff --git a/roverlay/argutil.py b/roverlay/argutil.py index 4cefdbd..813a7d7 100644 --- a/roverlay/argutil.py +++ b/roverlay/argutil.py @@ -3,13 +3,13 @@ import os.path import argparse import roverlay -def get_parser ( CMD_DESC, DEFAULT_CONFIG ): +def get_parser ( command_map, default_config_file, default_command='create' ): def is_fs_file ( value ): f = os.path.abspath ( value ) if not os.path.isfile ( f ): raise argparse.ArgumentTypeError ( - "%r is not a file." % value + "{!r} is not a file.".format ( value ) ) return f @@ -17,7 +17,7 @@ def get_parser ( CMD_DESC, DEFAULT_CONFIG ): d = os.path.abspath ( value ) if not os.path.isdir ( d ): raise argparse.ArgumentTypeError ( - "%r is not a directory." % value + "{!r} is not a directory.".format ( value ) ) return d @@ -25,7 +25,7 @@ def get_parser ( CMD_DESC, DEFAULT_CONFIG ): d = os.path.abspath ( value ) if os.path.exists ( d ) and not os.path.isdir ( d ): raise argparse.ArgumentTypeError ( - "%r cannot be a directory." % value + "{!r} cannot be a directory.".format ( value ) ) return d @@ -40,7 +40,13 @@ def get_parser ( CMD_DESC, DEFAULT_CONFIG ): roverlay.description_str, roverlay.license_str, )), epilog = 'Known commands:\n' + '\n'.join ( - ( ( '* ' + c ).ljust(17) + ' - ' + d for (c,d) in CMD_DESC.items() ) + ( + # '* - ' + '* {cmd} - {desc}'.format ( + cmd = i [0].ljust ( 15 ), + desc = i [1] + ) for i in command_map.items() + ) ), add_help=True, formatter_class=argparse.RawDescriptionHelpFormatter, @@ -60,18 +66,17 @@ def get_parser ( CMD_DESC, DEFAULT_CONFIG ): arg ( 'commands', - # fixme: CMD_DESC is "unknown", but default is set to a specific command - default='create', - help="action to perform. choices are " + ', '.join (CMD_DESC.keys()) + \ + default=default_command, + help="action to perform. choices are " + ', '.join (command_map.keys()) + \ ". defaults to %(default)s.", nargs="*", - choices=CMD_DESC.keys(), + choices=command_map.keys(), metavar="command" ) arg ( '-c', '--config', - default=DEFAULT_CONFIG, + default=default_config_file, help="config file", type=is_fs_file_or_void, metavar="" ) @@ -205,7 +210,7 @@ def get_parser ( CMD_DESC, DEFAULT_CONFIG ): return parser # --- end of get_parser (...) --- -def parse_argv ( *args, **kw ): +def parse_argv ( command_map, **kw ): """Parses sys.argv and returns the result as tuple (, , , ). @@ -229,7 +234,7 @@ def parse_argv ( *args, **kw ): pos = pos [k] - p = get_parser ( *args, **kw ).parse_args() + p = get_parser ( command_map=command_map, **kw ).parse_args() given = lambda kw : hasattr ( p, kw ) @@ -264,13 +269,14 @@ def parse_argv ( *args, **kw ): doconf ( p.distroot, 'distfiles.root' ) if given ( 'distdirs' ): + if given ( 'distroot' ): + raise Exception ( "--distdir and --disroot are mutually exclusive!" ) + doconf ( (), 'REPO.config_files' ) extra ['distdirs'] = frozenset ( p.distdirs ) extra ['nosync'] = True - # FIXME: COMMANDS are unknown here (theoretically) - commands.append ( "create" ) - # FIXME: - # distdir implies --nosync, but LocalRepo doesn't care about that ( sync() is nosync() ) + if 'create' in command_map: + commands.append ( "create" ) if given ( 'deprule_file' ): doconf ( p.deprule_file, 'DEPRES.SIMPLE_RULES.files' )