]> git.proxmox.com Git - pve-client.git/blobdiff - extractapi.pl
fix copyright date
[pve-client.git] / extractapi.pl
index 36caa28a90ec75aaadfeaa82e002f3719b1cef29..b2ec7b0ffea410c51c152587b17608b4790ab4b3 100755 (executable)
@@ -2,12 +2,46 @@
 
 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->{$k}"; # 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);