Sha256: ed0756d515b466d2bcb687c8f777dfdc705915c7674c121a951bd870bb69de9e

Contents?: true

Size: 1.32 KB

Versions: 11

Compression:

Stored size: 1.32 KB

Contents

#!/usr/bin/env ruby

require 'json'
require 'isna'

start = false
prev  = false
lineno = 0
colors = true

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 = {
       :time => Time.at(timestamp).to_s.rjust(20, ' '),
       :elapsed => format('%1.3f', (timestamp - start)).to_s.rjust(9, ' '),
       :diff => format('%2.3f', (timestamp - prev)).to_s.rjust(9, ' '),
       :lineno => (('| ') + (lineno.to_s)).ljust(5, ' '),
       :message => json['message']
    }

    if colors
      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("%<time>s %<elapsed>s %<diff>s %<lineno>s  %<message>s", object)
    prev = timestamp
  rescue => e
  # puts e.message
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
ix-cli-0.0.27 bin/ix-timestamp2
ix-cli-0.0.26 bin/ix-timestamp2
ix-cli-0.0.25 bin/ix-timestamp2
ix-cli-0.0.24 bin/ix-timestamp2
ix-cli-0.0.23 bin/ix-timestamp2
ix-cli-0.0.22 bin/ix-timestamp2
ix-cli-0.0.21 bin/ix-timestamp2
ix-cli-0.0.20 bin/ix-timestamp2
ix-cli-0.0.19 bin/ix-timestamp2
ix-cli-0.0.18 bin/ix-timestamp2
ix-cli-0.0.17 bin/ix-timestamp2