X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FCLIHandler.pm;h=45c0427b2faec2aed843db7c54ba40e665564e85;hp=1af9987c56c65d6b12a239df14177ae29627d632;hb=b8dc43668bb64a28dd00b14022302ec8d932deff;hpb=6627ae09a03b4898c519de50ea5d26effad7cd15 diff --git a/src/PVE/CLIHandler.pm b/src/PVE/CLIHandler.pm index 1af9987..45c0427 100644 --- a/src/PVE/CLIHandler.pm +++ b/src/PVE/CLIHandler.pm @@ -10,6 +10,29 @@ use PVE::INotify; use base qw(PVE::RESTHandler); +# $cmddef defines which (sub)commands are available in a specific CLI class. +# A real command is always an array consisting of its class, name, array of +# position fixed (required) parameters and hash of predefined parameters when +# mapping a CLI command t o an API call. Optionally an output method can be +# passed at the end, e.g., for formatting or transformation purpose. +# +# [class, name, fixed_params, API_pre-set params, output_sub ] +# +# In case of so called 'simple commands', the $cmddef can be also just an +# array. +# +# Examples: +# $cmddef = { +# command => [ 'PVE::API2::Class', 'command', [ 'arg1', 'arg2' ], { node => $nodename } ], +# do => { +# this => [ 'PVE::API2::OtherClass', 'method', [ 'arg1' ], undef, sub { +# my ($res) = @_; +# print "$res\n"; +# }], +# that => [ 'PVE::API2::OtherClass', 'subroutine' [] ], +# }, +# dothat => { alias => 'do that' }, +# } my $cmddef; my $exename; my $cli_handler_class; @@ -462,7 +485,7 @@ my $handle_cmd = sub { &$preparefunc() if $preparefunc; - my ($class, $name, $arg_param, $uri_param, $outsub) = @{$cmddef->{$cmd} || []}; + my ($class, $name, $arg_param, $uri_param, $outsub) = @{$def || []}; $abort->("unknown command '$cmd_str'") if !$class; my $prefix = "$exename $cmd_str";