You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
625 B
38 lines
625 B
require 'ruby-progressbar' |
|
|
|
module Squib |
|
|
|
# :nodoc: |
|
# @api private |
|
class DoNothing |
|
def increment |
|
end |
|
|
|
def finish |
|
end |
|
end |
|
|
|
# A facade that handles (or doesn't) the progress bar on the console |
|
# |
|
# :nodoc: |
|
# @api private |
|
class Progress |
|
attr_accessor :enabled |
|
|
|
def initialize(enabled) |
|
@enabled = enabled |
|
end |
|
|
|
def start(title="", total=100, &block) |
|
if @enabled |
|
@bar = ProgressBar.create(title: title, total: total, format: '%t <%B> %p%% %a') |
|
yield(@bar) |
|
@bar.finish |
|
else |
|
yield(Squib::DoNothing.new) |
|
end |
|
end |
|
end |
|
|
|
|
|
end |