Phil Richardson
03/19/2022, 9:19 PMgroupSwitch
to help select a security toggle and then provides each toggles associated required parameters.
My app will be a Hadoop client if it helps any, so my security selection under a Kerberos enabled cluster would be from the following 3 presents choices
1: A default mechanism, in which all that is delegated to the hadoop libraries (it will have options, but they are not relevant or hampering me right now)
2: User supplies a Kerberos principal & keytab as options
3: User supplies a Kerberos principal & associated password as options
As we can see, options 2 & 3 share a common parameter principal
, whilst option 1 does not require it as input. Principal would be a required parameter were the switch for 2/3 is used.
So the principal is not generic to the application, so I don't want to ask for it outside of the groupSwitch
However, if I request principal
in both OptionGroup
classes, we get an error that the option is duplicated
From my reading of how it works, a ChoiceGroup
is inherently single
when they are a required option, unlike with Mutually Exclusive Options, were they are optional. However, i can't use single
with a ChoiceGroup
to enforce that characteristic.
I can't use either Mutually Exclusive Options or Co-Occurring exclusively that I can see, given the desire to have a switch act as the driver to collect additional options or not.
Is there a pattern that would support this? i.e. allowing a --principal
parameter to exist in both option groups, yet it be considered unique as it would only be possible for one of the duplicates to be exposed?
Side node. groupSwitch
help formatting is very very odd.
When used with groupSwitch
the name
parameter of the OptionGroup
is used in the help formatter, but not the help
parameter.
The option groups are documented above the Options:
and the switches below it. So putting the help text for each option in the name
parameter feels very odd.
The switches in the Options:
section are not really conveyed that they are switches either.
Almost all other self-documenting elements in Clikt feel intuitive, but those for groupSwitch
feel quite out of place