ovsdb-client: Add support for pretty-printing JSON in output.
authorBen Pfaff <blp@nicira.com>
Fri, 11 Dec 2009 19:14:00 +0000 (11:14 -0800)
committerBen Pfaff <blp@nicira.com>
Fri, 11 Dec 2009 21:26:08 +0000 (13:26 -0800)
ovsdb/ovsdb-client.1.in
ovsdb/ovsdb-client.c

index 82a9919c08d9b6148694b3811ae10cacea7f72a7..5ec42a964aa6428b727546f751dc5d440d07596e 100644 (file)
@@ -120,6 +120,15 @@ characters.  Specifying this option prevents line truncation.
 This option suppresses the heading row that otherwise appears in the
 first row of table output.
 .
+.IP "\fB--pretty\fR"
+By default, JSON in output is printed as compactly as possible.  This
+option causes JSON in output to be printed in a more readable
+fashion.  Members of objects and elements of arrays are printed one
+per line, with indentation.
+.IP
+This option does not affect JSON in tables, which is always printed
+compactly.
+.
 .SS "Daemon Options"
 The daemon options apply only to the \fBmonitor\fR command.  With any
 other command, they have no effect.
index 0991e7146c8c978d62f64c72313ef6155ce209c4..2eb70fca6f167b1d6e6ea394dc0e0b41e25189f3 100644 (file)
@@ -54,6 +54,9 @@ static int output_width;
 /* --no-headings: Whether table output should include headings. */
 static int output_headings = true;
 
+/* --pretty: Flags to pass to json_to_string(). */
+static int json_flags = JSSF_SORT;
+
 static const struct command all_commands[];
 
 static void usage(void) NO_RETURN;
@@ -78,6 +81,7 @@ parse_options(int argc, char *argv[])
         {"wide", no_argument, &output_width, INT_MAX},
         {"format", required_argument, 0, 'f'},
            {"no-headings", no_argument, &output_headings, 0},
+        {"pretty", no_argument, &json_flags, JSSF_PRETTY | JSSF_SORT},
         {"verbose", optional_argument, 0, 'v'},
         {"help", no_argument, 0, 'h'},
         {"version", no_argument, 0, 'V'},
@@ -163,7 +167,8 @@ usage(void)
            "  -f, --format=FORMAT         set output formatting to FORMAT\n"
            "                              (\"table\", \"html\", or \"csv\"\n"
            "  --wide                      don't limit TTY lines to 79 bytes\n"
-           "  --no-headings               omit table heading row\n");
+           "  --no-headings               omit table heading row\n"
+           "  --pretty                    pretty-print JSON in output");
     daemon_usage();
     vlog_usage();
     printf("\nOther options:\n"
@@ -214,7 +219,7 @@ open_jsonrpc(const char *server)
 static void
 print_json(struct json *json)
 {
-    char *string = json_to_string(json, JSSF_SORT);
+    char *string = json_to_string(json, json_flags);
     fputs(string, stdout);
     free(string);
 }
@@ -642,7 +647,7 @@ do_transact(int argc UNUSED, char *argv[])
     }
     if (reply->error) {
         ovs_fatal(error, "transaction returned error: %s",
-                  json_to_string(reply->error, JSSF_SORT));
+                  json_to_string(reply->error, json_flags));
     }
     print_json(reply->result);
     putchar('\n');