lib/mj/logging.rb in build-tool-0.6.7 vs lib/mj/logging.rb in build-tool-0.6.8

- old
+ new

@@ -56,10 +56,14 @@ def debug? return logger.level > ::Logging.level_num(:debug) end + def quiet( string ) + logger.quiet( "<#{@prefix}> info #{string}" ) + end + def info( string ) logger.info( "<#{@prefix}> info #{string}" ) end def info? @@ -101,29 +105,32 @@ def initialize( title, total = 100, &block ) super( 'Progressbar', :level => :DEBUG ) @pbar = nil @oldlogger = nil - if ::Logging.appenders['stdout'].level >= ::Logging::level_num(:INFO) + if not STDOUT.tty? or + ::Logging.appenders['stdout'].level != ::Logging::level_num(:INFO) # We only do the progressbar thing if there is no verbose output active. - begin - # Remove the old stdout logger. - @oldlogger = ::Logging.appenders[ 'stdout' ] - ::Logging.logger[ 'root' ].remove_appenders( 'stdout' ) - ::Logging.logger[ 'root' ].add_appenders( self ) - # Add the progressbar logger - @pbar = ANSI::Progressbar.new( title, total ) - yield - ensure - @pbar.finish unless @pbar.nil? - # Reset the logger - ::Logging.logger[ 'root' ].remove_appenders( 'Progressbar' ) - ::Logging.logger[ 'root' ].add_appenders( @oldlogger ) - end - else - # If there is verbose output just print the text + # And only if there is a terminal listening. logger.info( title ) yield + return end + + begin + # Remove the old stdout logger. + @oldlogger = ::Logging.appenders[ 'stdout' ] + ::Logging.logger[ 'root' ].remove_appenders( 'stdout' ) + ::Logging.logger[ 'root' ].add_appenders( self ) + # Add the progressbar logger + @pbar = ANSI::Progressbar.new( title, total, out = STDOUT ) + yield + ensure + @pbar.finish unless @pbar.nil? + # Reset the logger + ::Logging.logger[ 'root' ].remove_appenders( 'Progressbar' ) + ::Logging.logger[ 'root' ].add_appenders( @oldlogger ) + end end end # class Progressbar + end; end