#221: Simfactory should complain about unused arguments -------------------------+-------------------------------------------------- Reporter: eschnett | Owner: mthomas Type: defect | Status: reopened Priority: major | Milestone: Component: SimFactory | Version: Resolution: | Keywords: -------------------------+--------------------------------------------------
Comment (by hinder):
Regarding arguments:
Why don't we just add code to each command to check that there are no unused arguments after processing the command line? There are not so many simfactory commands. Also, some of them take a variable number of arguments, so there is no way to determine which ones should be provided except within the commands themselves.
Regarding options:
Is the problem that we don't distinguish between global options and command options? If we could have an option database for the "sim" command, and then one for each of the subcommands, it would be easy to sort out the mess. The position of the option relative to the command name in the sim command line would indicate whether it was a global option or a command option. In the case of a command option, if it wasn't appropriate for that command, it wouldn't be in the command option database, and the option framework would complain about it. SimFactory uses the Python "optparse" module (http://docs.python.org/library/optparse.html). The optparse.parse_args() function usually reads options from the command line no matter where they are, and this prevents us from distinguishing between options before and after the command. However, according to http://docs.python.org/library/optparse.html#querying-and-manipulating- your-option-parser, you can use the OptionParser.disable_interspersed_args() feature to force optparse to stop parsing options as soon as it finds a positional argument. optparse will then return all the remaining arguments in a list, which can then be used with a new optionparser, depending on the command which is used.