dbus-pcap: Put json output behind --json option

That way we get the pretty output to eyeball by default.

Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
Change-Id: I5c85033792684180a4dc5c1682ed67c1f34cffb6
diff --git a/amboar/obmc-scripts/dbus-pcap/dbus-pcap b/amboar/obmc-scripts/dbus-pcap/dbus-pcap
index 86c1493..3e54712 100755
--- a/amboar/obmc-scripts/dbus-pcap/dbus-pcap
+++ b/amboar/obmc-scripts/dbus-pcap/dbus-pcap
@@ -3,11 +3,11 @@
 # SPDX-License-Identifier: Apache-2.0
 # Copyright 2019 IBM Corp.
 
+from argparse import ArgumentParser
 from itertools import islice, cycle
 from collections import namedtuple
 from enum import Enum
 from scapy.all import rdpcap
-import sys
 import struct
 import json
 
@@ -388,11 +388,22 @@
     raise TypeError
 
 def main():
-    stream = rdpcap(sys.argv[1])
-    matchers = [] if len(sys.argv) < 3 else parse_match_rules(sys.argv[2:])
+    parser = ArgumentParser()
+    parser.add_argument("--json", action="store_true",
+            help="Emit a JSON representation of the messages")
+    parser.add_argument("file", help="The pcap file")
+    parser.add_argument("expressions", nargs="*",
+            help="DBus message match expressions")
+    args = parser.parse_args()
+    stream = rdpcap(args.file)
+    matchers = parse_match_rules(args.expressions)
     try:
-        for msg in parse_session(stream, matchers):
-            print(json.dumps(msg, default=packetconv))
+        if args.json:
+            for msg in parse_session(stream, matchers):
+                print(json.dumps(msg, default=packetconv))
+        else:
+            for msg in parse_session(stream, matchers):
+                print(msg)
     except BrokenPipeError:
         pass