aiee

Python modules for common command line interfacing utils
git clone git://git.defalsify.org/aiee.git
Log | Files | Refs | LICENSE

commit 4afc8b54e590488a6fbde81a8e31ee42b6dec3c5
parent e72293d63a232ccb2c513d40ad7b06cac583a974
Author: lash <dev@holbrook.no>
Date:   Wed, 11 May 2022 12:42:52 +0000

Add append xarg example

Diffstat:
Maiee/flag.py | 18+++++++++---------
Mtests/test_arg.py | 20++++++++++++++++----
2 files changed, 25 insertions(+), 13 deletions(-)

diff --git a/aiee/flag.py b/aiee/flag.py @@ -185,21 +185,21 @@ class Arg: def kwargs(self, k): - return self.__x[k] + return self.__x.get(k, {}) def process_args(argparser, args, flags): for flag in args: for (short, long, dest, typ,) in args.get(flag): kw = args.kwargs(short[1]) + + if typ == bool: + kw['action'] = 'store_true' + kw['dest'] = dest + kw['type'] = typ + if long == None: - if kw == None: - argparser.add_argument(short, type=typ, dest=dest) - else: - argparser.add_argument(short, type=typ, dest=dest, **kw) + argparser.add_argument(short, **kw) else: - if kw == None: - argparser.add_argument(short, long, type=typ, dest=dest) - else: - argparser.add_argument(short, long, type=typ, dest=dest, **kw) + argparser.add_argument(short, long, **kw) # type=typ, dest=dest) return argparser diff --git a/tests/test_arg.py b/tests/test_arg.py @@ -130,11 +130,23 @@ class TestArg(unittest.TestCase): def test_xargs(self): - flag = ArgFlag() - flag.add('foo') + flags = ArgFlag() + flags.add('foo') - arg = Arg(flag) - arg.add('x', 'foo', help='foo', me=42) + args = Arg(flags) + args.add('x', 'foo', action='append', help='bah') + + argparser = argparse.ArgumentParser() + argparser = process_args(argparser, args, flags) + + r = argparser.parse_args(['-x', '13', '-x', '42']) + self.assertListEqual(r.x, ['13', '42']) + + args.add('y', 'foo', help='snuh', me='bar') + argparser = argparse.ArgumentParser() + + with self.assertRaises(TypeError): + process_args(argparser, args, flags) if __name__ == '__main__':