The queue commander already supported specifying config on the command line – either from a file or as a set of key=value pairs. So that meant adding key=value to support optional parameters wasn't going to work. What I chose to do is add -key=value for the optional fields, with sensible options for each field. For example "-logLevel=40 -location=0". I did not try to get parse enum names, but the help does print the allowed values for location and the usual values for logLevel.
Also I added a new log level option for starting the script queue commander, which sets the default log level for added scripts.
It is enough code that I am a bit worried about the lack of unit tests. But I have not yet figured out how to unit test these controllers.
Pull request: https://github.com/lsst-ts/ts_scriptqueue/pull/52