mirror of
https://git.proxmox.com/git/pve-client
synced 2025-10-04 19:01:04 +00:00

Note: The previous file does not contains indexed parameters like -net\d+ (those were converted to to -net[n]). But we need all those parameters for the command line completion. The binary format is much smaller the json, because it can handle references.
41 lines
747 B
Perl
Executable File
41 lines
747 B
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Storable;
|
|
|
|
use PVE::RESTHandler;
|
|
use PVE::API2;
|
|
|
|
sub remove_code_refs {
|
|
my ($tree) = @_;
|
|
|
|
my $class = ref($tree);
|
|
return if !$class;
|
|
|
|
if ($class eq 'ARRAY') {
|
|
foreach my $el (@$tree) {
|
|
remove_code_refs($el);
|
|
}
|
|
} elsif ($class eq 'HASH') {
|
|
foreach my $k (keys %$tree) {
|
|
if (my $itemclass = ref($tree->{$k})) {
|
|
if ($itemclass eq 'CODE') {
|
|
undef $tree->{$k};
|
|
} elsif ($itemclass eq 'Regexp') {
|
|
$tree->{$k} = "$tree"; # return string representation
|
|
} else {
|
|
remove_code_refs($tree->{$k});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
my $tree = PVE::RESTHandler::api_dump('PVE::API2', undef, 1);
|
|
|
|
remove_code_refs($tree);
|
|
Storable::store_fd($tree, \*STDOUT);
|
|
|
|
exit(0);
|