From 5372ed6fe3cd64d8196e3b4a2c543ee0f0f2cfca Mon Sep 17 00:00:00 2001 From: Hans Ulrich Niedermann Date: Sat, 22 Jan 2011 15:53:21 +0100 Subject: local ops: wrap args in WrapArgs() object This allows us to intercept access to args values and do useful once-off actions, or just programmatically define useful default values. --- src/fedpkg.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/fedpkg.py b/src/fedpkg.py index cacbf23..33b4e36 100755 --- a/src/fedpkg.py +++ b/src/fedpkg.py @@ -847,6 +847,23 @@ def verrel(args): print('%s-%s-%s' % (mymodule.module, mymodule.ver, mymodule.rel)) +class WrapArgs(object): + + """Wrap argparse.Namespace args to provide useful default actions + """ + + def __init__(self, args): + self.__args = args + + def __getattr__(self, name): + if name in self.__dict__: + # self-implemented attribute + return self.__dict__[name] + else: + # take attribute directly from original argparse.Namespace __args + return getattr(self.__args, name) + + def parse_cmdline(generate_manpage = False): """Parse the command line""" @@ -1261,7 +1278,7 @@ packages will be built sequentially. if not generate_manpage: # Parse the args - return parser.parse_args() + return WrapArgs(parser.parse_args()) else: # Generate the man page -- cgit