Signed-off-by: Dietmar Maurer <diet...@proxmox.com> Changes in v2: use 'die' instead of 'warn' add new schema property addStandardCliParameters
--- src/PVE/CLIFormatter.pm | 2 +- src/PVE/RESTHandler.pm | 61 +++++++++++++++++++++++++++---------------------- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/src/PVE/CLIFormatter.pm b/src/PVE/CLIFormatter.pm index 7a92f7a..22cd8f2 100644 --- a/src/PVE/CLIFormatter.pm +++ b/src/PVE/CLIFormatter.pm @@ -374,7 +374,7 @@ sub print_api_result { $options = { %$options }; # copy } - my $format = $options->{format} // 'text'; + my $format = $options->{'output-format'} // 'text'; return if $result_schema->{type} eq 'null'; diff --git a/src/PVE/RESTHandler.pm b/src/PVE/RESTHandler.pm index 5d0c03d..1d6b206 100644 --- a/src/PVE/RESTHandler.pm +++ b/src/PVE/RESTHandler.pm @@ -17,6 +17,33 @@ my $method_path_lookup = {}; our $AUTOLOAD; # it's a package global +our $standard_output_options = { + 'output-format' => PVE::JSONSchema::get_standard_option('pve-output-format'), + noheader => { + description => "Do not show column headers (for 'text' format).", + type => 'boolean', + optional => 1, + default => 1, + }, + noborder => { + description => "Do not draw borders (for 'text' format).", + type => 'boolean', + optional => 1, + default => 1, + }, + quiet => { + description => "Suppress printing results.", + type => 'boolean', + optional => 1, + }, + 'human-readable' => { + description => "Call output rendering functions to produce human readable text.", + type => 'boolean', + optional => 1, + default => 1, + } +}; + sub api_clone_schema { my ($schema) = @_; @@ -193,6 +220,13 @@ sub validate_method_schemas { foreach my $info (@$ma) { PVE::JSONSchema::validate_method_info($info); + if ($info->{parameters} && (my $pdef = $info->{parameters}->{properties})) { + foreach my $opt (keys %$standard_output_options) { + if (defined($pdef->{$opt})) { + die "detected overwriten standard CLI parameter '$opt' in ${class}->$info->{name}\n"; + } + } + } } } } @@ -746,33 +780,6 @@ my $replace_file_names_with_contents = sub { return $param; }; -our $standard_output_options = { - format => PVE::JSONSchema::get_standard_option('pve-output-format'), - noheader => { - description => "Do not show column headers (for 'text' format).", - type => 'boolean', - optional => 1, - default => 1, - }, - noborder => { - description => "Do not draw borders (for 'text' format).", - type => 'boolean', - optional => 1, - default => 1, - }, - quiet => { - description => "Suppress printing results.", - type => 'boolean', - optional => 1, - }, - 'human-readable' => { - description => "Call output rendering functions to produce human readable text.", - type => 'boolean', - optional => 1, - default => 1, - } -}; - sub add_standard_output_parameters { my ($org_schema) = @_; -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel