vty: enable optional-multi-choice syntax: [(one|two)]
Since very recently we sensibly handle commands like
cmd ([one]|[two]|[three])
as optional multi-choice arguments. In addition, support the more obvious
syntax of
cmd [(one|two|three)]
Internally, the tokens are mangled to [one] [two] and [three], which is how the
rest of the code detects optional args, and makes sense in terms of UI:
> cmd ?
[one]
[two]
[three]
(i.e. optional arguments are always shown in braces in '?' listings)
Before this patch, commands defined with a syntax like [(one|two)], would lead
to an assertion (shows as "multiple") during program startup.
Change-Id: I952b3c00f97e2447f2308b0ec6f5f1714692b5b2
diff --git a/tests/vty/vty_transcript_test.vty b/tests/vty/vty_transcript_test.vty
index 514a5ed..57920a8 100644
--- a/tests/vty/vty_transcript_test.vty
+++ b/tests/vty/vty_transcript_test.vty
@@ -2,6 +2,7 @@
...
multi0 (one|two|three)
multi1 ([one]|[two]|[three])
+ multi2 [(one|two|three)]
vty_transcript_test> multi0 ?
one 1
@@ -51,3 +52,17 @@
vty_transcript_test> multi1 [one]
% Unknown command.
+
+vty_transcript_test> multi2 ?
+ [one] 1
+ [two] 2
+ [three] 3
+
+vty_transcript_test> multi2 one
+ok argc=1 one
+
+vty_transcript_test> multi2 two
+ok argc=1 two
+
+vty_transcript_test> multi2
+ok argc=0