X-Git-Url: https://git.proxmox.com/?p=pve-client.git;a=blobdiff_plain;f=extractapi.pl;h=1971c9cf139edd4eee26d4cdb120fb9f4467404a;hp=36caa28a90ec75aaadfeaa82e002f3719b1cef29;hb=2b267ba22efefb08ac15feac1107b920f6186f50;hpb=8ef77d256747949df5d0547091fe1933aec2ec4a diff --git a/extractapi.pl b/extractapi.pl index 36caa28..1971c9c 100755 --- a/extractapi.pl +++ b/extractapi.pl @@ -2,12 +2,39 @@ use strict; use warnings; +use Storable; use PVE::RESTHandler; use PVE::API2; -use JSON; -my $tree = PVE::RESTHandler::api_dump_remove_refs(PVE::RESTHandler::api_dump('PVE::API2')); -print to_json($tree, {pretty => 1, canonical => 1}) . "\n"; +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);