class Fasten::UI::Console

Attributes

runner[RW]

Public Class Methods

new(runner:) click to toggle source
# File lib/fasten/ui/console.rb, line 13
def initialize(runner:)
  @runner = runner
  @old_done = []
  @old_failed = []
end

Public Instance Methods

cleanup() click to toggle source
# File lib/fasten/ui/console.rb, line 39
def cleanup
  puts '========== ========= ======== ======= ====== ===== ==== === == ='
  @setup_done = false
end
force_clear() click to toggle source
# File lib/fasten/ui/console.rb, line 44
def force_clear; end
setup() click to toggle source
# File lib/fasten/ui/console.rb, line 19
      def setup
        puts <<~FIN

          = == === ==== ===== ====== ======= ======== ========= ==========
          Fasten your seatbelts! #{'💺' * jobs} #{jobs} #{runner.use_threads ? 'threads' : 'processes'} #{tasks.count} tasks

          #{name}
        FIN

        $stdout.sync = true
        @setup_done = true
      end
update() click to toggle source
# File lib/fasten/ui/console.rb, line 32
def update
  setup unless @setup_done

  display_task_message(tasks.done, @old_done, 'Done in')
  display_task_message(tasks.failed, @old_failed, 'Fail in')
end

Protected Instance Methods

count_str(count, total) click to toggle source
# File lib/fasten/ui/console.rb, line 61
def count_str(count, total)
  len = total.to_s.length
  format "%#{len}d/%#{len}d", count, total
end
display_task_message(orig, old, message) click to toggle source
# File lib/fasten/ui/console.rb, line 48
def display_task_message(orig, old, message)
  return unless old.count != orig.count

  elapsed_str = hformat Time.new - runner.ini

  time_str = [elapsed_str, eta_str].compact.join(' ')

  (orig - old).each do |task|
    old << task
    puts "#{count_str(old.count, tasks.count)} Time: #{time_str} #{message} #{hformat task.dif} #{task.worker} Task #{task}"
  end
end
eta_str() click to toggle source
# File lib/fasten/ui/console.rb, line 66
def eta_str
  @eta_str ||= begin
    @runner_last_avg = runner.last_avg
    if runner.last_avg && runner.last_err
      format 'ETA ≈ %s ± %.2f', hformat(runner.last_avg), runner.last_err
    elsif runner.last_avg
      format 'ETA ≈ %s', hformat(runner.last_avg)
    end
  end
end