diff --git a/komandr.py b/komandr.py index 96f505b..d168a80 100644 --- a/komandr.py +++ b/komandr.py @@ -82,6 +82,10 @@ def _generate_command(self, func, name=None, **kwargs): args = list(args) is_positional = isinstance(v, self._POSITIONAL) options = [arg for arg in args if arg.startswith('-')] + if isinstance(v, list): + kwargs.update({ + 'action': 'append', + }) if is_positional: if options: args = options diff --git a/tests.py b/tests.py index 59687c0..68b6629 100644 --- a/tests.py +++ b/tests.py @@ -12,6 +12,14 @@ def foo(bar, baz=None): self.assertEqual(('1', '2'), komandr.execute(['foo', '1', '--baz', '2'])) + def testMultipleValuesForASingleArgument(self): + + def bar(c=[]): + return c + komandr.command(bar) + + self.assertEqual(['blue', 'red', ], komandr.execute(['bar', '--c', 'blue', '--c', 'red'])) + if __name__ == '__main__': unittest.main()