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