diff --git a/tools/python/jwutils/ArgsContainer.py b/tools/python/jwutils/ArgsContainer.py index a0aa7f5..5019701 100644 --- a/tools/python/jwutils/ArgsContainer.py +++ b/tools/python/jwutils/ArgsContainer.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +import argparse + from collections import OrderedDict from jwutils.log import * @@ -60,3 +62,18 @@ class ArgsContainer: # export except: pass slog(prio, f'{name}: {val}', caller=caller) + +def add_argument(p: argparse.ArgumentParser|ArgsContainer, name: str, *args, **kwargs): # export + + key = name.strip('--').replace('-', '_') + if isinstance(p, ArgsContainer): + if key in p.keys(): + return + elif isinstance(p, argparse.ArgumentParser): + for action in p._actions: + if key == action.dest: + return + else: + raise Exception('Unknown type {type(p)} of {p} passed to add_argument()') + + p.add_argument(name, *args, **kwargs)