pve-client/extractapi.pl
2018-06-25 12:13:38 +02:00

48 lines
872 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 $root = {
path => '/',
text => '',
children => PVE::RESTHandler::api_dump('PVE::API2', undef, 1),
info => {
GET => PVE::API2->map_method_by_name('index'),
},
};
remove_code_refs($root);
Storable::store_fd($root, \*STDOUT);
exit(0);