Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
sub get_standard_mapping {
my ($name, $base) = @_;
sub get_standard_mapping {
my ($name, $base) = @_;
$separator //= '';
$indent //= '';
$separator //= '';
$indent //= '';
- my $param_mapping_func = $gen_param_mapping_func->($cli_handler_class);
+ my $param_cb = $gen_param_mapping_func->($cli_handler_class);
my ($subcmd, $def, undef, undef, $cmdstr) = resolve_cmd($cmd);
$abort->("unknown command '$cmdstr'") if !defined($def) && ref($cmd) eq 'ARRAY';
my ($subcmd, $def, undef, undef, $cmdstr) = resolve_cmd($cmd);
$abort->("unknown command '$cmdstr'") if !defined($def) && ref($cmd) eq 'ARRAY';
$str .= $separator if $oldclass && $oldclass ne $class;
$str .= $indent;
$str .= $class->usage_str($name, "$prefix $cmd", $arg_param,
$str .= $separator if $oldclass && $oldclass ne $class;
$str .= $indent;
$str .= $class->usage_str($name, "$prefix $cmd", $arg_param,
- $fixed_param, $format,
- $param_mapping_func);
+ $fixed_param, $format, $param_cb);
$oldclass = $class;
} elsif (defined($def->{$cmd}->{alias}) && ($format eq 'asciidoc')) {
$oldclass = $class;
} elsif (defined($def->{$cmd}->{alias}) && ($format eq 'asciidoc')) {
$abort->("unknown command '$cmd'") if !$class;
$str .= $indent;
$abort->("unknown command '$cmd'") if !$class;
$str .= $indent;
- $str .= $class->usage_str($name, $prefix, $arg_param, $fixed_param, $format,
- $param_mapping_func);
+ $str .= $class->usage_str($name, $prefix, $arg_param, $fixed_param, $format, $param_cb);
- my ($args, $preparefunc, $param_mapping_func) = @_;
+ my ($args, $preparefunc, $param_cb) = @_;
$cmddef->{help} = [ __PACKAGE__, 'help', ['extra-args'] ];
$cmddef->{help} = [ __PACKAGE__, 'help', ['extra-args'] ];
my ($class, $name, $arg_param, $uri_param, $outsub) = @{$def || []};
$abort->("unknown command '$cmd_str'") if !$class;
my ($class, $name, $arg_param, $uri_param, $outsub) = @{$def || []};
$abort->("unknown command '$cmd_str'") if !$class;
- my $res = $class->cli_handler($cmd_str, $name, $cmd_args, $arg_param, $uri_param, $param_mapping_func);
+ my $res = $class->cli_handler($cmd_str, $name, $cmd_args, $arg_param, $uri_param, $param_cb);
if (defined $outsub) {
my $result_schema = $class->map_method_by_name($name)->{returns};
if (defined $outsub) {
my $result_schema = $class->map_method_by_name($name)->{returns};
};
my $handle_simple_cmd = sub {
};
my $handle_simple_cmd = sub {
- my ($args, $preparefunc, $param_mapping_func) = @_;
+ my ($args, $preparefunc, $param_cb) = @_;
my ($class, $name, $arg_param, $uri_param, $outsub) = @{$cmddef};
die "no class specified" if !$class;
my ($class, $name, $arg_param, $uri_param, $outsub) = @{$cmddef};
die "no class specified" if !$class;
&$preparefunc() if $preparefunc;
&$preparefunc() if $preparefunc;
- my $res = $class->cli_handler($name, $name, \@ARGV, $arg_param, $uri_param, $param_mapping_func);
+ my $res = $class->cli_handler($name, $name, \@ARGV, $arg_param, $uri_param, $param_cb);
if (defined $outsub) {
my $result_schema = $class->map_method_by_name($name)->{returns};
if (defined $outsub) {
my $result_schema = $class->map_method_by_name($name)->{returns};
my $preparefunc = $params{prepare};
my $preparefunc = $params{prepare};
- my $param_mapping_func = $gen_param_mapping_func->($cli_handler_class);
+ my $param_cb = $gen_param_mapping_func->($cli_handler_class);
$exename = &$get_exe_name($class);
$exename = &$get_exe_name($class);
$cmddef = ${"${class}::cmddef"};
if (ref($cmddef) eq 'ARRAY') {
$cmddef = ${"${class}::cmddef"};
if (ref($cmddef) eq 'ARRAY') {
- $handle_simple_cmd->(\@ARGV, $preparefunc, $param_mapping_func);
+ $handle_simple_cmd->(\@ARGV, $preparefunc, $param_cb);
- $handle_cmd->(\@ARGV, $preparefunc, $param_mapping_func);
+ $handle_cmd->(\@ARGV, $preparefunc, $param_cb);
# 'short' ... command line only (text, one line)
# 'full' ... text, include description
# 'asciidoc' ... generate asciidoc for man pages (like 'full')
# 'short' ... command line only (text, one line)
# 'full' ... text, include description
# 'asciidoc' ... generate asciidoc for man pages (like 'full')
-# $param_mapping_func ... mapping for string parameters to file path parameters
+# $param_cb ... mapping for string parameters to file path parameters
- my ($self, $name, $prefix, $arg_param, $fixed_param, $format, $param_mapping_func) = @_;
+ my ($self, $name, $prefix, $arg_param, $fixed_param, $format, $param_cb) = @_;
$format = 'long' if !$format;
$format = 'long' if !$format;
my $type_text = $prop->{$k}->{type} || 'string';
my $type_text = $prop->{$k}->{type} || 'string';
- my $param_mapping_hash = {};
- if (defined($param_mapping_func)) {
- my $mapping = $param_mapping_func->($name);
- $param_mapping_hash = $compute_param_mapping_hash->($mapping);
- next if $k eq 'password' && $param_mapping_hash->{$k} && !$prop->{$k}->{optional};
+ if (defined($param_cb)) {
+ my $mapping = $param_cb->($name);
+ $param_map = $compute_param_mapping_hash->($mapping);
+ next if $k eq 'password' && $param_map->{$k} && !$prop->{$k}->{optional};
- $opts .= $get_property_description->($base, 'arg', $prop->{$k}, $format,
- $param_mapping_hash->{$k});
+ $opts .= $get_property_description->($base, 'arg', $prop->{$k}, $format, $param_map->{$k});
if (!$prop->{$k}->{optional}) {
$args .= " " if $args;
if (!$prop->{$k}->{optional}) {
$args .= " " if $args;
}
my $replace_file_names_with_contents = sub {
}
my $replace_file_names_with_contents = sub {
- my ($param, $param_mapping_hash) = @_;
+ my ($param, $param_map) = @_;
- while (my ($k, $d) = each %$param_mapping_hash) {
+ while (my ($k, $d) = each %$param_map) {
next if $d->{interactive}; # handled by the JSONSchema's get_options code
$param->{$k} = $d->{func}->($param->{$k})
if defined($param->{$k});
next if $d->{interactive}; # handled by the JSONSchema's get_options code
$param->{$k} = $d->{func}->($param->{$k})
if defined($param->{$k});
- my ($self, $prefix, $name, $args, $arg_param, $fixed_param, $param_mapping_func) = @_;
+ my ($self, $prefix, $name, $args, $arg_param, $fixed_param, $param_cb) = @_;
my $info = $self->map_method_by_name($name);
my $res;
eval {
my $info = $self->map_method_by_name($name);
my $res;
eval {
- my $param_mapping_hash = {};
- $param_mapping_hash = $compute_param_mapping_hash->($param_mapping_func->($name)) if $param_mapping_func;
- my $param = PVE::JSONSchema::get_options($info->{parameters}, $args, $arg_param, $fixed_param, $param_mapping_hash);
+ my $param_map = {};
+ $param_map = $compute_param_mapping_hash->($param_cb->($name)) if $param_cb;
+ my $param = PVE::JSONSchema::get_options($info->{parameters}, $args, $arg_param, $fixed_param, $param_map);
- if (defined($param_mapping_hash)) {
- &$replace_file_names_with_contents($param, $param_mapping_hash);
+ if (defined($param_map)) {
+ $replace_file_names_with_contents->($param, $param_map);
}
$res = $self->handle($info, $param);
}
$res = $self->handle($info, $param);
die $err if !$ec || $ec ne "PVE::Exception" || !$err->is_param_exc();
die $err if !$ec || $ec ne "PVE::Exception" || !$err->is_param_exc();
- $err->{usage} = $self->usage_str($name, $prefix, $arg_param, $fixed_param, 'short', $param_mapping_func);
+ $err->{usage} = $self->usage_str($name, $prefix, $arg_param, $fixed_param, 'short', $param_cb);