bin/ix-timestamp2 in ix-cli-0.0.15 vs bin/ix-timestamp2 in ix-cli-0.0.16

- old
+ new

@@ -1,14 +1,56 @@ #!/usr/bin/env ruby -# Expects a timestamp perline +require 'json' +require 'isna' -require 'time' +start = false +prev = false +lineno = 0 +colors = true -STDIN.each do |line| - puts '=' * 80 - orignal_time = line.chomp - parsed_time = Time.at(line.chomp.to_i) - puts "#{orignal_time} => #{parsed_time}" - puts '' +STDIN.each_line do |line| + begin + lineno += 1 + json = JSON.parse(line) + timestamp = json['timestamp'].to_f + unless start + start = timestamp + prev = timestamp + end + + object = { + :timestamp => timestamp.to_s.rjust(20, ' '), + :time => Time.at(timestamp).to_s.rjust(20, ' '), + :elapsed => format('%1.5f', (timestamp - start)).to_s.rjust(10, ' '), + :diff => format('%2.5f', (timestamp - prev)).to_s.rjust(10, ' '), + :lineno => (('| ') + (lineno.to_s)).ljust(5, ' '), + :message => json['message'] + } + + if colors + object[:timestamp] = object[:timestamp].to_s.to_ansi.yellow.to_s + object[:time] = object[:time].to_s.to_ansi.cyan.to_s + object[:elapsed] = object[:elapsed].to_s.to_ansi.pink.to_s + + if (timestamp - prev) > 1 and (timestamp - prev) < 10 + object[:diff] = object[:diff].to_s.to_ansi.green.to_s + end + + if (timestamp - prev) > 10 and (timestamp - prev) < 50 + object[:diff] = object[:diff].to_s.to_ansi.yellow.to_s + end + + if (timestamp - prev) > 50 + object[:diff] = object[:diff].to_s.to_ansi.red.to_s + end + + object[:lineno] = object[:lineno].to_s.to_ansi.cyan.to_s + end + + puts format("%<timestamp>s %<time>s %<elapsed>s %<diff>s %<lineno>s %<message>s", object) + prev = timestamp + rescue => e + puts e.message + end end