+my $gen_param_mapping_func = sub {
+ my ($cli_handler_class) = @_;
+
+ my $param_mapping = $cli_handler_class->can('param_mapping');
+
+ if (!$param_mapping) {
+ my $read_password = $cli_handler_class->can('read_password');
+ my $string_param_mapping = $cli_handler_class->can('string_param_file_mapping');
+
+ return $string_param_mapping if !$read_password;
+
+ $param_mapping = sub {
+ my ($name) = @_;
+
+ my $password_map = get_standard_mapping('pve-password', {
+ func => $read_password
+ });
+ my $map = $string_param_mapping ? $string_param_mapping->($name) : [];
+ return [@$map, $password_map];
+ };
+ }
+
+ return $param_mapping;
+};
+