maxLength => 40, # sha1 hex digest lenght is 40
});
+register_standard_option('skiplock', {
+ description => "Ignore locks - only root is allowed to use this option.",
+ type => 'boolean',
+ optional => 1,
+});
+
register_standard_option('extra-args', {
description => "Extra arguments as array",
type => 'array',
# In property strings we default to not allowing additional properties
$additional_properties = 0 if !defined($additional_properties);
+ # Support named formats here, too:
+ if (!ref($format)) {
+ if (my $desc = $format_list->{$format}) {
+ $format = $desc;
+ } else {
+ die "unknown format: $format\n";
+ }
+ } elsif (ref($format) ne 'HASH') {
+ die "unexpected format value of type ".ref($format)."\n";
+ }
+
my $default_key;
my $res = {};
return 1;
#} elsif ($value =~ m/^(0|false|no|off)$/i) {
} elsif ($value eq '0') {
- return 0;
+ return 1; # return success (not value)
} else {
add_error($errors, $path, "type check ('$type') failed - got '$value'");
return undef;
check_prop($value, $requires, $path, $errors);
} elsif (!defined($value->{$requires})) {
add_error($errors, $path ? "$path.$requires" : $requires,
- "missing property - '$newpath' requiers this property");
+ "missing property - '$newpath' requires this property");
}
}
description => "JSON Schema for parameters.",
optional => 1,
},
- formatter => {
- type => 'object',
- description => "Used to store page formatter information (set by PVE::RESTHandler->register_page_formatter).",
- optional => 1,
- },
returns => {
type => 'object',
description => "JSON Schema for return value.",
};
sub generate_typetext {
- my ($format) = @_;
+ my ($format, $list_enums) = @_;
my ($default_key, $keyAliasProps) = &$find_schema_default_key($format);
} 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 .= '<enum>';
+ }
} elsif ($phash->{type} eq 'boolean') {
$typetext .= '<1|0>';
} elsif ($phash->{type} eq 'integer') {
}
sub schema_get_type_text {
- my ($phash) = @_;
+ my ($phash, $style) = @_;
my $type = $phash->{type} || 'string';
} elsif ($phash->{format_description}) {
return "<$phash->{format_description}>";
} elsif ($phash->{enum}) {
- return "(" . join(' | ', sort @{$phash->{enum}}) . ")";
+ return "<" . join(' | ', sort @{$phash->{enum}}) . ">";
} elsif ($phash->{pattern}) {
return $phash->{pattern};
} elsif ($type eq 'integer' || $type eq 'number') {
# NOTE: always access values as number (avoid converion to string)
if (defined($phash->{minimum}) && defined($phash->{maximum})) {
- return "$type (" . ($phash->{minimum} + 0) . "-" .
+ return "<$type> (" . ($phash->{minimum} + 0) . " - " .
($phash->{maximum} + 0) . ")";
} elsif (defined($phash->{minimum})) {
- return "$type (" . ($phash->{minimum} + 0) . "- N)";
+ return "<$type> (" . ($phash->{minimum} + 0) . " - N)";
} elsif (defined($phash->{maximum})) {
- return "$type (-N - " . ($phash->{maximum} + 0) . ")";
+ return "<$type> (-N - " . ($phash->{maximum} + 0) . ")";
}
} elsif ($type eq 'string') {
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);
}
}
}
- return $type;
+ return "<$type>";
}
1;