Class: Aircana::ProgressTracker
- Inherits:
-
Object
- Object
- Aircana::ProgressTracker
- Defined in:
- lib/aircana/progress_tracker.rb
Class Method Summary collapse
- .create_and_use_progress_bar(total, message) {|bar| ... } ⇒ Object
- .process_batch_with_progress(items, total, message) ⇒ Object
- .with_batch_progress(items, message) ⇒ Object
- .with_progress_bar(total, message) ⇒ Object
- .with_spinner(message, success_message: nil, item: nil) ⇒ Object
Class Method Details
.create_and_use_progress_bar(total, message) {|bar| ... } ⇒ Object
28 29 30 31 32 33 34 35 36 |
# File 'lib/aircana/progress_tracker.rb', line 28 def self.(total, ) = TTY::ProgressBar.new( "#{message} [:bar] :current/:total (:percent) :elapsed", total: total, bar_format: :box ) yield() end |
.process_batch_with_progress(items, total, message) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'lib/aircana/progress_tracker.rb', line 45 def self.process_batch_with_progress(items, total, ) (total, ) do || items.each_with_index do |item, index| result = yield(item, index) .advance(1) result end end end |
.with_batch_progress(items, message) ⇒ Object
38 39 40 41 42 43 |
# File 'lib/aircana/progress_tracker.rb', line 38 def self.with_batch_progress(items, , &) total = items.size return with_spinner("#{message} (#{total} item)", item: items.first, &) if total <= 1 process_batch_with_progress(items, total, , &) end |
.with_progress_bar(total, message) ⇒ Object
22 23 24 25 26 |
# File 'lib/aircana/progress_tracker.rb', line 22 def self.(total, , &) return with_spinner(, &) if total <= 1 (total, , &) end |
.with_spinner(message, success_message: nil, item: nil) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/aircana/progress_tracker.rb', line 8 def self.with_spinner(, success_message: nil, item: nil) spinner = TTY::Spinner.new("[:spinner] #{message}", format: :dots, clear: true) spinner.auto_spin begin result = yield(item) spinner.success("✅ #{success_message || message}") result rescue StandardError => e spinner.error("❌ #{message} failed") raise e end end |