]> git.puffer.fish Git - mirror/frr.git/commitdiff
tools: teach xml2cli.pl the "[]" notation for optional arguments
authorRenato Westphal <renato@opensourcerouting.org>
Mon, 19 Dec 2016 20:30:59 +0000 (18:30 -0200)
committerRenato Westphal <renato@opensourcerouting.org>
Wed, 4 Jan 2017 00:03:28 +0000 (22:03 -0200)
Requested by Daniel Walton.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
tools/xml2cli.pl

index 1b45e7f726c2e6ac402b3bd774162f7f12061730..e0980421bd844be193cc296ea77d02738ad4c91f 100755 (executable)
@@ -141,6 +141,8 @@ sub generate_arguments {
                # argument is the name of the node
                if ($node{'input'} or $node{'type'} eq "select") {
                        $arg_value = "argv[" . $argc . "]->arg";
+               } elsif ($node{'optional'}) {
+                       $arg_value = "(argc > " . $argc . " ? argv[" . $argc. "]->arg : NULL)";
                } else {
                        $arg_value = '"' . $node{'name'} . '"';
                }
@@ -196,7 +198,11 @@ sub generate_code {
                        $helpstr .= $::options{$options_name}{'help'};
                } else {
                        $funcname .= $node{'name'} . " ";
-                       $cmdstr .= $node{'name'} . " ";
+                       if ($node{'optional'}) {
+                               $cmdstr .= "[" . $node{'name'} . "] ";
+                       } else {
+                               $cmdstr .= $node{'name'} . " ";
+                       }
                        $helpstr .= "\n       \"" . $node{'help'} . "\\n\"";
                }
 
@@ -279,6 +285,7 @@ sub parse_tree {
        $node{'help'} = $xml_node->findvalue('./@help');
        $node{'function'} = $xml_node->findvalue('./@function');
        $node{'ifdef'} = $xml_node->findvalue('./@ifdef');
+       $node{'optional'} = $xml_node->findvalue('./@optional');
 
        # push node to stack
        push (@nodes, \%node);