X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=data%2FPVE%2FRESTHandler.pm;h=71578471613ac6313b1559bb7745214477c1f0ff;hb=3ce640abb3af0319be0ee92660ac4f9b4655741c;hp=47f66afb6bbac5fa0ffee805cf93756a45ac7549;hpb=e143e9d86b489c57166b5c192bf41dcc3452471e;p=pve-common.git diff --git a/data/PVE/RESTHandler.pm b/data/PVE/RESTHandler.pm index 47f66af..7157847 100644 --- a/data/PVE/RESTHandler.pm +++ b/data/PVE/RESTHandler.pm @@ -344,7 +344,8 @@ sub handle { # # $name ... the name of the method # $prefix ... usually something like "$exename $cmd" ('pvesm add') -# $arg_param ... list of parameters we want to get as ordered arguments on the command line +# $arg_param ... list of parameters we want to get as ordered arguments +# on the command line (or single parameter name for lists) # $fixed_param ... do not generate and info about those parameters # $format: # 'long' ... default (list all options) @@ -365,12 +366,20 @@ sub usage_str { my $arg_hash = {}; my $args = ''; + + $arg_param = [ $arg_param ] if $arg_param && !ref($arg_param); + foreach my $p (@$arg_param) { next if !$prop->{$p}; # just to be sure + my $pd = $prop->{$p}; $arg_hash->{$p} = 1; $args .= " " if $args; - $args .= $prop->{$p} && $prop->{$p}->{optional} ? "[<$p>]" : "<$p>"; + if ($pd->{format} && $pd->{format} =~ m/-list/) { + $args .= "{<$p>}"; + } else { + $args .= $pd->{optional} ? "[<$p>]" : "<$p>"; + } } my $get_prop_descr = sub { @@ -468,19 +477,9 @@ sub cli_handler { my $info = $self->map_method_by_name($name); - my $param; - foreach my $p (keys %$fixed_param) { - $param->{$p} = $fixed_param->{$p}; - } - - foreach my $p (@$arg_param) { - $param->{$p} = shift @$args if $args->[0] && $args->[0] !~ m/^-/; - } - my $res; eval { - my $param = PVE::JSONSchema::get_options($info->{parameters}, $args, $param, $pwcallback); - + my $param = PVE::JSONSchema::get_options($info->{parameters}, $args, $arg_param, $fixed_param, $pwcallback); $res = $self->handle($info, $param); }; if (my $err = $@) {