class EY::Serverside::Shell::Formatter
Constants
- DEBUG
- ERROR
- FATAL
- IMPORTANT
- IMPORTANT_PREFIX
- INFO
- MINUTES_FORMAT
- NL
- SECONDS_FORMAT
- STATUS_PREFIX
- SUBSTATUS_PREFIX
- WARN
Public Class Methods
new(stdout, stderr, start_time, verbose)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 21 def initialize(stdout, stderr, start_time, verbose) @stdout, @stderr = stdout, stderr @start = start_time.to_i @verbose = verbose end
Public Instance Methods
build_message(severity, stamp, message)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 33 def build_message(severity, stamp, message) if IMPORTANT.include?(severity) prepend("#{stamp}#{IMPORTANT_PREFIX}", message) elsif INFO == severity prepend(stamp, message) else prepend(stamp, message) end end
call(severity, time, _, message)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 27 def call(severity, time, _, message) msg = build_message(severity, timestamp(time), message) put_to_io(severity, msg) msg end
prepend(pre, str)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 43 def prepend(pre, str) str.gsub(/^/, pre).sub(/\n?\z/m,NL) end
put_to_io(severity, msg)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 47 def put_to_io(severity, msg) case severity when DEBUG if @verbose @stdout << msg @stdout.flush end when INFO # Need to differentiate info messages more when we're running in verbose mode if @verbose && msg.index(STATUS_PREFIX) @stdout.puts @stdout << thor_shell.set_color(msg, :white, true) else @stdout << msg end @stdout.flush when WARN @stderr.puts @stderr << thor_shell.set_color(msg, :yellow, true) @stderr.flush when ERROR @stderr.puts @stderr << thor_shell.set_color(msg, :red, true) @stderr.flush else @stderr << msg @stderr.flush end end
thor_shell()
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 88 def thor_shell thor_shell ||= Thor::Shell::Color.new end
timestamp(datetime)
click to toggle source
# File lib/engineyard-serverside/shell/formatter.rb, line 77 def timestamp(datetime) diff = datetime.to_i - @start diff = 0 if diff < 0 div, mod = diff.divmod(60) if div.zero? SECONDS_FORMAT % mod else MINUTES_FORMAT % [div,mod] end end