Class: Omaship::ProgressRenderer
- Inherits:
-
Object
- Object
- Omaship::ProgressRenderer
- Defined in:
- lib/omaship/progress_renderer.rb
Constant Summary collapse
- SPINNER_FRAMES =
[ "[= ]", "[ = ]", "[ = ]", "[ =]", "[ = ]", "[ = ]" ].freeze
Instance Method Summary collapse
- #finish_activity(message = nil) ⇒ Object
-
#initialize(out:) ⇒ ProgressRenderer
constructor
A new instance of ProgressRenderer.
- #start_activity(message, eta: nil) ⇒ Object
- #step(message) ⇒ Object
- #update_activity(message: nil, eta: nil) ⇒ Object
Constructor Details
#initialize(out:) ⇒ ProgressRenderer
Returns a new instance of ProgressRenderer.
12 13 14 15 16 17 18 19 20 |
# File 'lib/omaship/progress_renderer.rb', line 12 def initialize(out:) @out = out @seen = {} @activity_mutex = Mutex.new @activity_message = nil @activity_eta = nil @current_frame = SPINNER_FRAMES.first @cursor_hidden = false end |
Instance Method Details
#finish_activity(message = nil) ⇒ Object
61 62 63 64 |
# File 'lib/omaship/progress_renderer.rb', line 61 def finish_activity( = nil) stop_spinner step() if end |
#start_activity(message, eta: nil) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/omaship/progress_renderer.rb', line 29 def start_activity(, eta: nil) @activity_mutex.synchronize do @activity_message = @activity_eta = eta end if interactive_output? hide_cursor render_activity_frame(@current_frame) start_spinner else step(activity_line(message:, eta:)) end end |
#step(message) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/omaship/progress_renderer.rb', line 22 def step() return if @seen[] @seen[] = true @out.puts end |
#update_activity(message: nil, eta: nil) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/omaship/progress_renderer.rb', line 44 def update_activity(message: nil, eta: nil) @activity_mutex.synchronize do @activity_message = if @activity_eta = eta if eta end if interactive_output? render_activity_frame(@current_frame) else line = nil @activity_mutex.synchronize do line = activity_line(message: @activity_message, eta: @activity_eta) end step(line) end end |