[pve-devel] [pve-common v2] PVE::RESTHandler::generate_usage_str - new static method to generate usage from $info

Dietmar Maurer dietmar at proxmox.com
Fri Jul 6 09:30:07 CEST 2018


This is useful to generate usage information with pveclient, where we do not have
handler classes at all.

Signed-off-by: Dietmar Maurer <dietmar at proxmox.com>
---

Changes in v2: renamed generate_usage_str => getopt_usage

To avoid name conflict with CLIHandler method.

 src/PVE/RESTHandler.pm | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/PVE/RESTHandler.pm b/src/PVE/RESTHandler.pm
index c303c38..715404a 100644
--- a/src/PVE/RESTHandler.pm
+++ b/src/PVE/RESTHandler.pm
@@ -566,7 +566,7 @@ my $compute_param_mapping_hash = sub {
 
 # generate usage information for command line tools
 #
-# $name        ... the name of the method
+# $info        ... method info
 # $prefix      ... usually something like "$exename $cmd" ('pvesm add')
 # $arg_param   ... list of parameters we want to get as ordered arguments 
 #                  on the command line (or single parameter name for lists)
@@ -577,13 +577,13 @@ my $compute_param_mapping_hash = sub {
 #   'full'     ... text, include description
 #   'asciidoc' ... generate asciidoc for man pages (like 'full')
 # $param_cb ... mapping for string parameters to file path parameters
-sub usage_str {
-    my ($self, $name, $prefix, $arg_param, $fixed_param, $format, $param_cb) = @_;
+sub getopt_usage {
+    my ($info, $prefix, $arg_param, $fixed_param, $format, $param_cb) = @_;
 
     $format = 'long' if !$format;
 
-    my $info = $self->map_method_by_name($name);
     my $schema = $info->{parameters};
+    my $name = $info->{name};
     my $prop = $schema->{properties};
 
     my $out = '';
@@ -679,6 +679,14 @@ sub usage_str {
     return $out;
 }
 
+sub usage_str {
+    my ($self, $name, $prefix, $arg_param, $fixed_param, $format, $param_cb) = @_;
+
+    my $info = $self->map_method_by_name($name);
+
+    return getopt_usage($info, $prefix, $arg_param, $fixed_param, $format, $param_cb);
+}
+
 # generate docs from JSON schema properties
 sub dump_properties {
     my ($prop, $format, $style, $filterFn) = @_;
-- 
2.11.0




More information about the pve-devel mailing list