summaryrefslogtreecommitdiff
path: root/alot/utils
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2023-03-16 19:12:40 +0100
committerAnton Khirnov <anton@khirnov.net>2023-03-16 19:12:40 +0100
commit7515515cb889c6bb8435c7eae923891d6b28dd8e (patch)
treee36e379f040c453497cac535d564d63520580873 /alot/utils
parentefec104994051a54dac147889f69c23f9c1bcb1c (diff)
main: allow -c to be used multiple times
Merge values from multiple files.
Diffstat (limited to 'alot/utils')
-rw-r--r--alot/utils/argparse.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/alot/utils/argparse.py b/alot/utils/argparse.py
index b8e3d87d..f58b7a75 100644
--- a/alot/utils/argparse.py
+++ b/alot/utils/argparse.py
@@ -116,7 +116,7 @@ class BooleanAction(argparse.Action):
setattr(namespace, self.dest, values)
-class ValidatedStoreAction(argparse.Action):
+class _ValidatedAction(argparse.Action):
"""An action that allows a validation function to be specificied.
The validator keyword must be a function taking exactly one argument, that
@@ -128,6 +128,9 @@ class ValidatedStoreAction(argparse.Action):
super().__init__(option_strings, dest, **kwargs)
self.validator = validator
+ def _do_action(self, namespace, values):
+ raise NotImplementedError
+
def __call__(self, parser, namespace, values, option_string=None):
if self.validator:
try:
@@ -135,4 +138,15 @@ class ValidatedStoreAction(argparse.Action):
except ValidationFailed as e:
raise argparse.ArgumentError(self, str(e))
+ self._do_action(namespace, values)
+
+class ValidatedStoreAction(_ValidatedAction):
+ def _do_action(self, namespace, values):
setattr(namespace, self.dest, values)
+class ValidatedAppendAction(_ValidatedAction):
+ def _do_action(self, namespace, values):
+ items = getattr(namespace, self.dest)
+ if items is None:
+ items = []
+ items.append(values)
+ setattr(namespace, self.dest, items)