X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=src%2FPVE%2FCLIHandler.pm;h=9955d77e06395c85dd219dac7d9f322bc1824992;hb=86dff11ce6e3bf38756a4ca1b0f2af3f3377024a;hp=7e87a40b44f3e8ad3db0b2aa6bc6163cd523c9d0;hpb=6bd0783c11f72019ffe222f7088ba408fc407278;p=pve-common.git diff --git a/src/PVE/CLIHandler.pm b/src/PVE/CLIHandler.pm index 7e87a40..9955d77 100644 --- a/src/PVE/CLIHandler.pm +++ b/src/PVE/CLIHandler.pm @@ -2,10 +2,13 @@ package PVE::CLIHandler; use strict; use warnings; + use JSON; +use Scalar::Util qw(weaken); use PVE::SafeSyslog; use PVE::Exception qw(raise raise_param_exc); +use PVE::JSONSchema; use PVE::RESTHandler; use PVE::PTY; use PVE::INotify; @@ -198,8 +201,8 @@ sub generate_usage_str { my ($subcmd, $def, undef, undef, $cmdstr) = resolve_cmd($cmd); - my $generate; - $generate = sub { + my $generate_weak; + $generate_weak = sub { my ($indent, $separator, $def, $prefix) = @_; my $str = ''; @@ -223,7 +226,7 @@ sub generate_usage_str { } else { next if $def->{$cmd}->{alias}; - my $substr = $generate->($indent, '', $def->{$cmd}, "$prefix $cmd"); + my $substr = $generate_weak->($indent, '', $def->{$cmd}, "$prefix $cmd"); if ($substr) { $substr .= $separator if $substr !~ /\Q$separator\E{2}/; $str .= $substr; @@ -232,14 +235,16 @@ sub generate_usage_str { } } else { + $abort->("unknown command '$cmd->[0]'") if !$def; my ($class, $name, $arg_param, $fixed_param, undef, $formatter_properties) = @$def; - $abort->("unknown command '$cmd'") if !$class; $str .= $indent; $str .= $class->usage_str($name, $prefix, $arg_param, $fixed_param, $format, $param_cb, $formatter_properties); } return $str; }; + my $generate = $generate_weak; + weaken($generate_weak); return $generate->($indent, $separator, $def, $cmdstr); } @@ -514,7 +519,7 @@ function _$exename() { cmd=\${words[1]} curr=\${words[cwords]} prev=\${words[cwords-1]} - compadd \$(COMP_CWORD="\$cwords" COMP_LINE="\$line" COMP_POINT="\$point" \\ + compadd -- \$(COMP_CWORD="\$cwords" COMP_LINE="\$line" COMP_POINT="\$point" \\ $exename bashcomplete "\$cmd" "\$curr" "\$prev") } __EOD__