Not opposed, but what does it gain, as opposed to just dropping a new file like this:
I assume that at some point I (or someone else) will mess up the commandline options. Preventing the user from entering a wrong value would make a frustrating user experience. Instead, the UI is designed to not let you pick invalid choices, but it is always possible to enter invalid stuff in “text mode”.
This also allows for more smooth upgrades where an option changes, as it still allows you to save the backup.
All option values are passed simply as strings in a dictionary, so you need to parse the strings yourself in the module.
In retrospect it would have been better to allow the module to define a class with options, and then fill that before invoking the module as it would reduce the need for parsing code and enforce that all modules parse the same way.
But as it is now, the invalid string is passed to the module, but there is a checker in
Controller.cs that emits a warning if the option value does not match the description.