2009/8/24 Iustin Pop <[email protected]>:
> On Mon, Aug 24, 2009 at 11:56:34AM +0200, Michael Hanselmann wrote:
>> --- a/lib/cli.py
>> +++ b/lib/cli.py
>> -ARGS_NONE = None
>> -ARGS_ONE = ARGS_FIXED(1)
>> -ARGS_ANY = ARGS_ATLEAST(0)
>
> Please do not remove these - at least not ARGS_NONE, which should become
> [] and thus a lot of the code churn could be eliminated.
>
> As for the others, I think (looking at the changes in scripts/gnt-*)
> that having usual arguments for ARGS_INSTANCE_ONE and ARGS_NODE_ONE
> would be really helpful.
As discussed offline this will be done in a separate patch. Merging
with the patches buildin on top of this one would be too painful
otherwise.
>> +def _CheckArguments(cmd, args_def, args):
>> + """Verifies the arguments using the argument definition.
>> +
>> + """
>
> Would you mind please expanding the docstring to detail the algorithm
> you use below?
Interdiff:
--- a/lib/cli.py
+++ b/lib/cli.py
@@ -465,6 +465,24 @@ def _ParseArgs(argv, commands, aliases):
def _CheckArguments(cmd, args_def, args):
"""Verifies the arguments using the argument definition.
+ Algorithm:
+
+ 1. Abort with error if values specified by user but none expected.
+
+ 1. For each argument in definition
+
+ 1. Keep running count of minimum number of values (min_count)
+ 1. Keep running count of maximum number of values (max_count)
+ 1. If it has an unlimited number of values
+
+ 1. Abort with error if it's not the last argument in the definition
+
+ 1. If last argument has limited number of values
+
+ 1. Abort with error if number of values doesn't match or is too large
+
+ 1. Abort with error if user didn't pass enough values (min_count)
+
"""
if args and not args_def:
ToStderr("Error: Command %s expects no arguments", cmd)
Regards,
Michael