diff --git a/bin/view-events b/bin/view-events index 51e33f64f63547b0ddb20f86b46ac868fca17df4..d3a87f33badc4ca1193509af2f174a76e1619612 100755 --- a/bin/view-events +++ b/bin/view-events @@ -68,7 +68,9 @@ def to_stream_id(str) "#{epoch * 1000}-0" end -def format_event(fields) +def format_event(fields, json: False, **) + return JSON.dump(fields) if json + event = fields["event"] parts = [fields.fetch("timestamp", "—"), Color.event(event)] @@ -146,6 +148,7 @@ parser = OptionParser.new do |opts| opts.on("--from TEL", "Filter by sender") { |v| options[:from] = v } opts.on("--bandwidth-id ID", "Filter by Bandwidth msg ID") { |v| options[:bandwidth_id] = v } opts.on("--stanza-id ID", "Filter by XMPP stanza ID") { |v| options[:stanza_id] = v } + opts.on("-j", "--json", "Format output as JSON") { |v| options[:json] = v } end parser.parse! @@ -189,7 +192,7 @@ if options[:recent] break if entries.size < BATCH_SIZE end - matched.each { |fields| puts format_event(fields) } + matched.each { |fields| puts format_event(fields, **options) } count = matched.length else start_id = to_stream_id(options[:start]) @@ -202,7 +205,7 @@ else entries.each do |_id, fields| next unless matches?(fields, filters) - puts format_event(fields) + puts format_event(fields, **options) count += 1 end