class Mnogootex::Job::Logger
Public Class Methods
new(spinner:, processor:, runners:, porters:)
click to toggle source
Calls superclass method
# File lib/mnogootex/job/logger.rb, line 8 def initialize(spinner:, processor:, runners:, porters:) super do while runners.any?(&:alive?) self.class.print_status(runners: runners, spinner: spinner) sleep 0.02 # 50 fps end self.class.print_status(runners: runners, spinner: spinner) puts self.class.print_outcome(runners: runners, porters: porters, processor: processor) end end
print_outcome(runners:, porters:, processor:)
click to toggle source
# File lib/mnogootex/job/logger.rb, line 30 def print_outcome(runners:, porters:, processor:) puts 'Outcome:' porters.zip(runners).each do |porter, runner| outcome_icon = runner.successful? ? '✔'.green : '✘'.red puts " #{outcome_icon} #{porter.hid}" puts processor.call(runner.log_lines) unless runner.successful? end end
print_status(runners:, spinner:)
click to toggle source
# File lib/mnogootex/job/logger.rb, line 21 def print_status(runners:, spinner:) spinners_frames = [] runners.each do |runner| spinner_frame = spinner[runner.count_lines % spinner.size] spinners_frames << colour_by_state(spinner_frame, runner) end print "Runners: #{spinners_frames.join}\r" end
Private Class Methods
colour_by_state(string, runner)
click to toggle source
# File lib/mnogootex/job/logger.rb, line 41 def colour_by_state(string, runner) if runner.alive? string.yellow elsif runner.successful? string.green else string.red end end