]> git.proxmox.com Git - pve-client.git/blobdiff - extractapi.pl
Add task log to 'lxc create'
[pve-client.git] / extractapi.pl
index 36caa28a90ec75aaadfeaa82e002f3719b1cef29..1971c9cf139edd4eee26d4cdb120fb9f4467404a 100755 (executable)
@@ -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);