Skip to content

Commit

Permalink
added progressbar listener and made it the new default
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick Gauthier committed Mar 25, 2010
1 parent 02cd1ee commit 96f4a21
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 2 deletions.
1 change: 1 addition & 0 deletions hydra.gemspec
Expand Up @@ -34,6 +34,7 @@ Gem::Specification.new do |s|
"lib/hydra/listener/abstract.rb",
"lib/hydra/listener/minimal_output.rb",
"lib/hydra/listener/notifier.rb",
"lib/hydra/listener/progress_bar.rb",
"lib/hydra/listener/report_generator.rb",
"lib/hydra/master.rb",
"lib/hydra/message.rb",
Expand Down
2 changes: 1 addition & 1 deletion lib/hydra.rb
Expand Up @@ -11,5 +11,5 @@
require 'hydra/listener/minimal_output'
require 'hydra/listener/report_generator'
require 'hydra/listener/notifier'

require 'hydra/listener/progress_bar'

48 changes: 48 additions & 0 deletions lib/hydra/listener/progress_bar.rb
@@ -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

2 changes: 1 addition & 1 deletion lib/hydra/tasks.rb
Expand Up @@ -68,7 +68,7 @@ def initialize(name = :hydra)
@files = []
@verbose = false
@autosort = true
@listeners = [Hydra::Listener::MinimalOutput.new]
@listeners = [Hydra::Listener::ProgressBar.new]

yield self if block_given?

Expand Down

0 comments on commit 96f4a21

Please sign in to comment.