Generates nice and readable output for list of string and simple objects.

Signed-off-by: Dietmar Maurer <diet...@proxmox.com>
---
 src/PVE/CLIFormatter.pm | 37 +++++++++++++++++++++++++++++++++++++
 1 file changed, 37 insertions(+)

diff --git a/src/PVE/CLIFormatter.pm b/src/PVE/CLIFormatter.pm
index 8bb42ca..0424804 100644
--- a/src/PVE/CLIFormatter.pm
+++ b/src/PVE/CLIFormatter.pm
@@ -81,6 +81,43 @@ sub render_bytes {
 
 PVE::JSONSchema::register_renderer('bytes', \&render_bytes);
 
+sub render_yaml {
+    my ($value) = @_;
+
+    # YAML like first level (use to_json for deeper levels)
+
+    if (my $class = ref($value)) {
+       if ($class eq 'HASH' && scalar(keys %$value)) {
+           my $res;
+           foreach my $key (keys %$value) {
+               my $el = $value->{$key};
+               if (!defined($el) || ref($el)) {
+                   push @$res, "$key: " . to_json($el, {  allow_nonref => 1, 
canonical => 1 });
+               } else {
+                   push @$res, "$key: $el";
+               }
+           }
+           return join("\n", @$res);
+       } elsif ($class eq 'ARRAY' && scalar(@$value)) {
+           my $res;
+           foreach my $el (@$value) {
+               if (!defined($el) || ref($el)) {
+                   push @$res, "- " . to_json($el, {  allow_nonref => 1, 
canonical => 1 });
+               } else {
+                   push @$res, "- $el";
+               }
+           }
+           return join("\n", @$res);
+       } else {
+           return to_json($value, { canonical => 1 });
+       }
+    } else {
+       return "$value";
+    }
+}
+
+PVE::JSONSchema::register_renderer('yaml', \&render_yaml);
+
 sub query_terminal_options {
     my ($options) = @_;
 
-- 
2.11.0

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to