From 2ebbf97ec166d39b485ab5743489e0ef246515c3 Mon Sep 17 00:00:00 2001 From: Gosuke Miyashita Date: Sat, 14 Feb 2015 16:51:07 +0900 Subject: [PATCH 1/2] Add color method to set log color code explicitly Also rename existent `color` method to `colorize` --- lib/itamae/logger.rb | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/lib/itamae/logger.rb b/lib/itamae/logger.rb index 87eab9f1..47cc1ad8 100644 --- a/lib/itamae/logger.rb +++ b/lib/itamae/logger.rb @@ -7,6 +7,7 @@ module Logger class Formatter attr_accessor :colored attr_accessor :depth + attr_accessor :color INDENT_LENGTH = 3 @@ -19,7 +20,7 @@ def initialize(*args) def call(severity, datetime, progname, msg) log = "%s : %s%s\n" % ["%5s" % severity, ' ' * INDENT_LENGTH * depth , msg2str(msg)] if colored - color(log, severity) + colorize(log, severity) else log end @@ -32,6 +33,14 @@ def indent @depth -= 1 end + def color(code) + @prev_color = @color + @color = code + yield + ensure + @color = @prev_color + end + private def msg2str(msg) case msg @@ -45,17 +54,21 @@ def msg2str(msg) end end - def color(str, severity) - color_code = case severity - when "INFO" - :green - when "WARN" - :magenta - when "ERROR" - :red - else - :clear - end + def colorize(str, severity) + if @color + color_code = @color + else + color_code = case severity + when "INFO" + :clear + when "WARN" + :magenta + when "ERROR" + :red + else + :clear + end + end ANSI.public_send(color_code) { str } end end @@ -73,7 +86,7 @@ def log_device=(value) @log_device = value @logger = create_logger end - + private def create_logger From 83b7c8fece22ccc81f337f1661f45e51d9f9bf2b Mon Sep 17 00:00:00 2001 From: Gosuke Miyashita Date: Sat, 14 Feb 2015 16:51:16 +0900 Subject: [PATCH 2/2] Set log color green when a resource will be updated --- lib/itamae/resource/base.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/itamae/resource/base.rb b/lib/itamae/resource/base.rb index 0c295b1d..9bab4d83 100644 --- a/lib/itamae/resource/base.rb +++ b/lib/itamae/resource/base.rb @@ -205,11 +205,15 @@ def show_differences if current_value.nil? && value.nil? # ignore elsif current_value.nil? && !value.nil? - Logger.info "#{key} will be '#{value}'" + Logger.formatter.color :green do + Logger.info "#{key} will be '#{value}'" + end elsif current_value == value || value.nil? Logger.debug "#{key} will not change (current value is '#{current_value}')" else - Logger.info "#{key} will change from '#{current_value}' to '#{value}'" + Logger.formatter.color :green do + Logger.info "#{key} will change from '#{current_value}' to '#{value}'" + end end end end