Sha256: c09a0021aef8f7d64515bd9ffe7af9ec0692e33670ebfd800d83024d003e4060
Contents?: true
Size: 1.49 KB
Versions: 4
Compression:
Stored size: 1.49 KB
Contents
# frozen_string_literal: true require 'colorize' module Mnogootex module Job class Logger < Thread 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 class << self 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 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 private def colour_by_state(string, runner) if runner.alive? string.yellow elsif runner.successful? string.green else string.red end end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
mnogootex-2.0.0 | lib/mnogootex/job/logger.rb |
mnogootex-1.1.0 | lib/mnogootex/job/logger.rb |
mnogootex-1.0.1 | lib/mnogootex/job/logger.rb |
mnogootex-1.0.0 | lib/mnogootex/job/logger.rb |