Class: EY::Serverside::Shell::Formatter
- Defined in:
- lib/engineyard-serverside/shell/formatter.rb
Instance Method Summary collapse
- #build_message(severity, stamp, message) ⇒ Object
- #call(severity, time, _, message) ⇒ Object
-
#initialize(stdout, stderr, start_time, verbose) ⇒ Formatter
constructor
A new instance of Formatter.
- #prepend(pre, str) ⇒ Object
- #put_to_io(severity, msg) ⇒ Object
- #thor_shell ⇒ Object
- #timestamp(datetime) ⇒ Object
Constructor Details
#initialize(stdout, stderr, start_time, verbose) ⇒ Formatter
Returns a new instance of Formatter.
5 6 7 8 9 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 5 def initialize(stdout, stderr, start_time, verbose) @stdout, @stderr = stdout, stderr @start = start_time.to_i @verbose = verbose end |
Instance Method Details
#build_message(severity, stamp, message) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 17 def (severity, stamp, ) if %w[WARN ERROR FATAL].include?(severity) prepend("#{stamp}!> ", "#{}") elsif severity == "INFO" prepend(stamp, ) else prepend(' ' * stamp.size, ) end end |
#call(severity, time, _, message) ⇒ Object
11 12 13 14 15 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 11 def call(severity, time, _, ) msg = (severity, (time), ) put_to_io(severity, msg) msg end |
#prepend(pre, str) ⇒ Object
27 28 29 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 27 def prepend(pre, str) str.gsub(/^/, pre).sub(/\n?\z/m,"\n") end |
#put_to_io(severity, msg) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 31 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 @stdout << (@verbose && msg.index('~>') ? "\n#{thor_shell.set_color(msg, :white, true)}" : msg) @stdout.flush when "WARN" @stderr << "\n" << thor_shell.set_color(msg, :yellow, true) @stderr.flush when "ERROR" @stderr << "\n" << thor_shell.set_color(msg, :red, true) @stderr.flush else @stderr << msg @stderr.flush end end |
#thor_shell ⇒ Object
65 66 67 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 65 def thor_shell thor_shell ||= Thor::Shell::Color.new end |
#timestamp(datetime) ⇒ Object
54 55 56 57 58 59 60 61 62 63 |
# File 'lib/engineyard-serverside/shell/formatter.rb', line 54 def (datetime) diff = datetime.to_i - @start diff = 0 if diff < 0 div, mod = diff.divmod(60) if div.zero? "+ %02ds " % mod else "+%2dm %02ds " % [div,mod] end end |