diff options
Diffstat (limited to 'action/date.py')
-rw-r--r-- | action/date.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/action/date.py b/action/date.py new file mode 100644 index 0000000..4b73a30 --- /dev/null +++ b/action/date.py @@ -0,0 +1,29 @@ +# coding: utf-8 +# Copyright Ruamel bvba 2007-2018 + +from __future__ import print_function, absolute_import, division, unicode_literals + +import argparse +import datetime + + +class DateAction(argparse.Action): + """argparse action for parsing dates with or without dashes + + parser = argparse.ArgumentParser() + parser.add_argument('--verbose', '-v', action=DateAction) + """ + def __init__(self, option_strings, dest, nargs=None, **kwargs): + if nargs != 1 and nargs not in [None, '?', '*']: + raise ValueError("DateAction can only have one argument") + super(DateAction, self).__init__(option_strings, dest, nargs=nargs, **kwargs) + + def __call__(self, parser, namespace, values, option_string=None): + if values is None: + return None + s = values + for c in './-_': + s = s.replace(c, '') + val = datetime.datetime.strptime(s, '%Y%m%d').date() + # val = self.const + setattr(namespace, self.dest, val) |