Details
-
Task
-
Status: Open
-
Major
-
Resolution: Unresolved
-
3.0.0-beta1
-
None
-
Docs Required, Release Notes Required
Description
We have several command options that should accept a list of strings, for example cluster init --cmg-nodes. cmg-nodes can accept a single sting, string with comma-separated node names without a space, and finally, can be repeated.
Imagine you are a user that types a command
[defaultNode]> cluster init --cluster-name my --meta-storage-node defaultNode --cmg-node defaultNode, defaultNode2
And get the error:
Unmatched argument at index 7: 'defaultNode2'
That is not clear what is wrong but the reason is that you typed a space before the comma.
I suggest rethinking the way CLI supports lists of strings and offering a more user-friendly solution. Probably, we have to redefine our own jline3 parser. I would expect and least a clear error message about what is wrong and how to fix it.
Another challenge here is to improve autocompletion in interactive mode. Imagine I want to use <TAB> completion against a cluster of two nodes node1 and node2:
[defaultNode]> cluster init --cluster-name my --meta-storage-node <TAB1>node1 --meta-storage-node <TAB2>node2
On TAB1 I can see the completion of 2 variants: node1 and node2. That is correct. On TAB2 I expect to see only node2 completion but I still see node1 and node2. That is not correct, because the list of nodes is not expected to contain duplicates.
As a result of this ticket, I expect:
- correct errors with examples
- correct completions
- a common solution to be used in all commands that need lists of string