added progressbar listener and made it the new default
This commit is contained in:
parent
02cd1ee662
commit
96f4a2195d
|
@ -34,6 +34,7 @@ Gem::Specification.new do |s|
|
||||||
"lib/hydra/listener/abstract.rb",
|
"lib/hydra/listener/abstract.rb",
|
||||||
"lib/hydra/listener/minimal_output.rb",
|
"lib/hydra/listener/minimal_output.rb",
|
||||||
"lib/hydra/listener/notifier.rb",
|
"lib/hydra/listener/notifier.rb",
|
||||||
|
"lib/hydra/listener/progress_bar.rb",
|
||||||
"lib/hydra/listener/report_generator.rb",
|
"lib/hydra/listener/report_generator.rb",
|
||||||
"lib/hydra/master.rb",
|
"lib/hydra/master.rb",
|
||||||
"lib/hydra/message.rb",
|
"lib/hydra/message.rb",
|
||||||
|
|
|
@ -11,5 +11,5 @@ require 'hydra/listener/abstract'
|
||||||
require 'hydra/listener/minimal_output'
|
require 'hydra/listener/minimal_output'
|
||||||
require 'hydra/listener/report_generator'
|
require 'hydra/listener/report_generator'
|
||||||
require 'hydra/listener/notifier'
|
require 'hydra/listener/notifier'
|
||||||
|
require 'hydra/listener/progress_bar'
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
module Hydra #:nodoc:
|
||||||
|
module Listener #:nodoc:
|
||||||
|
# Output a progress bar as files are completed
|
||||||
|
class ProgressBar < Hydra::Listener::Abstract
|
||||||
|
# Store the total number of files
|
||||||
|
def testing_begin(files)
|
||||||
|
@total_files = files.size
|
||||||
|
@files_completed = 0
|
||||||
|
@test_output = ""
|
||||||
|
@errors = false
|
||||||
|
render_progress_bar
|
||||||
|
end
|
||||||
|
|
||||||
|
# Increment completed files count and update bar
|
||||||
|
def file_end(file, output)
|
||||||
|
unless output == '.'
|
||||||
|
@output.write "\r#{' '*60}\r#{output}\n"
|
||||||
|
@errors = true
|
||||||
|
end
|
||||||
|
@files_completed += 1
|
||||||
|
render_progress_bar
|
||||||
|
end
|
||||||
|
|
||||||
|
# Break the line
|
||||||
|
def testing_end
|
||||||
|
render_progress_bar
|
||||||
|
@output.write "\n"
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def render_progress_bar
|
||||||
|
width = 30
|
||||||
|
complete = ((@files_completed.to_f / @total_files.to_f) * width).to_i
|
||||||
|
@output.write "\r" # move to beginning
|
||||||
|
@output.write 'Progress ['
|
||||||
|
@output.write @errors ? "\033[1;31m" : "\033[1;32m"
|
||||||
|
complete.times{@output.write '#'}
|
||||||
|
@output.write '>'
|
||||||
|
(width-complete).times{@output.write ' '}
|
||||||
|
@output.write "\033[0m"
|
||||||
|
@output.write "] #{@files_completed}/#{@total_files}"
|
||||||
|
@output.flush
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -68,7 +68,7 @@ module Hydra #:nodoc:
|
||||||
@files = []
|
@files = []
|
||||||
@verbose = false
|
@verbose = false
|
||||||
@autosort = true
|
@autosort = true
|
||||||
@listeners = [Hydra::Listener::MinimalOutput.new]
|
@listeners = [Hydra::Listener::ProgressBar.new]
|
||||||
|
|
||||||
yield self if block_given?
|
yield self if block_given?
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue