Class: Kettle::Family::WorkflowProgress
- Inherits:
-
Object
- Object
- Kettle::Family::WorkflowProgress
- Defined in:
- lib/kettle/family/workflow_progress.rb
Constant Summary collapse
- FORMAT =
"%<member>-24s :events :status"- EVENT_WIDTH =
30
Instance Method Summary collapse
- #advance(member, status:, success: true, mark: nil) ⇒ Object
- #finish_member(member, success:, status:) ⇒ Object
-
#initialize(io:, label:, total:, jobs:, enabled: true) ⇒ WorkflowProgress
constructor
A new instance of WorkflowProgress.
- #start ⇒ Object
- #start_member(member, total:, status:) ⇒ Object
- #stop ⇒ Object
- #summary(message) ⇒ Object
- #tty? ⇒ Boolean
- #update(member, status:, mark: nil) ⇒ Object
Constructor Details
#initialize(io:, label:, total:, jobs:, enabled: true) ⇒ WorkflowProgress
Returns a new instance of WorkflowProgress.
11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/kettle/family/workflow_progress.rb', line 11 def initialize(io:, label:, total:, jobs:, enabled: true) @io = io @label = label @total = total.to_i @jobs = jobs.to_i @enabled = enabled && !!io @bars = {} @member_totals = {} @member_events = Hash.new("") @mutex = Mutex.new @tty = @enabled && io.respond_to?(:tty?) && io.tty? @multibar = @tty ? TTY::ProgressBar::Multi.new(output: io) : nil end |
Instance Method Details
#advance(member, status:, success: true, mark: nil) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/kettle/family/workflow_progress.rb', line 44 def advance(member, status:, success: true, mark: nil) return unless @enabled synchronize do event_mark = mark || (success ? "." : "F") if @tty append_event(member, event_mark) render(member, status: status) else write_line("[#{member.name}] #{event_mark} #{status}") end end end |
#finish_member(member, success:, status:) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/kettle/family/workflow_progress.rb', line 72 def finish_member(member, success:, status:) return unless @enabled synchronize do if @tty render(member, status: status) else write_line("[#{member.name}] #{success ? "done" : "failed"} #{status}") end end end |
#start ⇒ Object
25 26 27 28 29 |
# File 'lib/kettle/family/workflow_progress.rb', line 25 def start return unless @enabled write_line("#{@label} #{@total} member#{plural(@total)} with #{@jobs} job#{plural(@jobs)}:") end |
#start_member(member, total:, status:) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/kettle/family/workflow_progress.rb', line 31 def start_member(member, total:, status:) return unless @enabled synchronize do @member_totals[member.name] = total.to_i if @tty render(member, status: status) else write_line("[#{member.name}] > #{status}") end end end |
#stop ⇒ Object
84 85 86 87 88 |
# File 'lib/kettle/family/workflow_progress.rb', line 84 def stop return unless @enabled synchronize { @multibar&.stop } end |
#summary(message) ⇒ Object
94 95 96 97 98 99 100 101 |
# File 'lib/kettle/family/workflow_progress.rb', line 94 def summary() return unless @enabled synchronize do @io.puts unless @tty write_line() end end |
#tty? ⇒ Boolean
90 91 92 |
# File 'lib/kettle/family/workflow_progress.rb', line 90 def tty? @tty end |
#update(member, status:, mark: nil) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/kettle/family/workflow_progress.rb', line 58 def update(member, status:, mark: nil) return unless @enabled return if status.to_s.empty? synchronize do if @tty append_event(member, mark) if mark render(member, status: status) else write_line("[#{member.name}] #{mark || ">"} #{status}") end end end |