package PVE::APIClient::Commands::help; use strict; use warnings; use PVE::APIClient::Commands::help; use PVE::APIClient::Commands::list; use PVE::APIClient::Commands::lxc; use PVE::APIClient::Commands::config; use PVE::APIClient::Commands::remote; use PVE::CLIHandler; use base qw(PVE::CLIHandler); __PACKAGE__->register_method ({ name => 'help', path => 'help', method => 'GET', description => "Print usage information.", parameters => { additionalProperties => 0, properties => { verbose => { description => "Verbose output - list all options.", type => 'boolean', optional => 1, default => 0, }, }, }, returns => { type => 'null'}, code => sub { my ($param) = @_; my $text = "USAGE: pveclient ...\n\n" if !$param->{verbose}; my $format = $param->{verbose} ? 'full' : 'short'; my $assemble_usage_string = sub { my ($subcommand, $def) = @_; my $sortfunc = sub { sort keys %{$_[0]} }; if (ref($def) eq 'HASH') { foreach my $cmd (&$sortfunc($def)) { if (ref($def->{$cmd}) eq 'ARRAY') { my ($class, $name, $arg_param, $fixed_param) = @{$def->{$cmd}}; $text .= $class->usage_str($name, "pveclient $subcommand $name", $arg_param, $fixed_param, $format, $class->can('read_password')); } } } else { my ($class, $name, $arg_param, $fixed_param) = @$def; $text .= $class->usage_str($name, "pveclient $name", $arg_param, $fixed_param, $format); } }; $assemble_usage_string->('help', $PVE::APIClient::Commands::help::cmddef); $assemble_usage_string->('list', $PVE::APIClient::Commands::list::cmddef); $assemble_usage_string->('lxc', $PVE::APIClient::Commands::lxc::cmddef); $assemble_usage_string->('remote', $PVE::APIClient::Commands::remote::cmddef); $assemble_usage_string->('config', $PVE::APIClient::Commands::config::cmddef); $text .= "pveclient {options}\n\n"; print STDERR $text; return undef; }}); our $cmddef = [ __PACKAGE__, 'help', []]; 1;