From abc1afd874c5a1ea126dbcf5013166512264e6f1 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Sat, 5 Nov 2016 16:44:59 +0100 Subject: [PATCH] schema_get_type_text: do not always expand enums We try to keep the text short by default. --- src/PVE/JSONSchema.pm | 14 ++++++++++---- src/PVE/RESTHandler.pm | 6 +++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/PVE/JSONSchema.pm b/src/PVE/JSONSchema.pm index fe6614a..37a6e1f 100644 --- a/src/PVE/JSONSchema.pm +++ b/src/PVE/JSONSchema.pm @@ -1485,7 +1485,7 @@ my $find_schema_default_key = sub { }; sub generate_typetext { - my ($format) = @_; + my ($format, $list_enums) = @_; my ($default_key, $keyAliasProps) = &$find_schema_default_key($format); @@ -1518,7 +1518,11 @@ sub generate_typetext { } elsif (my $text = $phash->{typetext}) { $typetext .= $text; } elsif (my $enum = $phash->{enum}) { - $typetext .= '<' . join('|', @$enum) . '>'; + if ($list_enums || (scalar(@$enum) <= 3)) { + $typetext .= '<' . join('|', @$enum) . '>'; + } else { + $typetext .= ''; + } } elsif ($phash->{type} eq 'boolean') { $typetext .= '<1|0>'; } elsif ($phash->{type} eq 'integer') { @@ -1674,7 +1678,7 @@ sub print_property_string { } sub schema_get_type_text { - my ($phash) = @_; + my ($phash, $style) = @_; my $type = $phash->{type} || 'string'; @@ -1700,7 +1704,9 @@ sub schema_get_type_text { if (my $format = $phash->{format}) { $format = get_format($format) if ref($format) ne 'HASH'; if (ref($format) eq 'HASH') { - return generate_typetext($format); + my $list_enums = 0; + $list_enums = 1 if $style && $style eq 'config-sub'; + return generate_typetext($format, $list_enums); } } } diff --git a/src/PVE/RESTHandler.pm b/src/PVE/RESTHandler.pm index 4b67c61..6fc69ad 100644 --- a/src/PVE/RESTHandler.pm +++ b/src/PVE/RESTHandler.pm @@ -417,7 +417,7 @@ sub handle { # $display_name: for example "-$name" of "<$name>", pass undef to use "$name:" # $phash: json schema property hash # $format: 'asciidoc', 'short', 'long' or 'full' -# $style: 'config', 'arg' or 'fixed' +# $style: 'config', 'config-sub', 'arg' or 'fixed' my $get_property_description = sub { my ($name, $style, $phash, $format, $hidepw, $fileparams) = @_; @@ -434,7 +434,7 @@ my $get_property_description = sub { chomp $descr; - my $type = PVE::JSONSchema::schema_get_type_text($phash); + my $type = PVE::JSONSchema::schema_get_type_text($phash, $style); if ($hidepw && $name eq 'password') { $type = ''; @@ -458,7 +458,7 @@ my $get_property_description = sub { } elsif ($style eq 'arg') { $res .= "`-$name` "; } elsif ($style eq 'fixed') { - $res .= "`<$name>` "; + $res .= "`<$name>`: "; } else { die "unknown style '$style'"; } -- 2.39.2