module GreenHat::Spinner

Info Formatter

Public Instance Methods

humanize(time) click to toggle source

Replace TimeDifference with stackoverflow.com/a/4136485/1678507

# File lib/greenhat/thing/spinner.rb, line 40
def humanize(time)
  miliseconds = (Time.now - time) * 1000

  [[1000, :ms], [60, :s], [60, :m], [24, :h]].map do |count, name|
    next unless miliseconds.positive?

    miliseconds, n = miliseconds.divmod(count)

    "#{n.to_i}#{name}" unless n.to_i.zero?
  end.compact.reverse.join(' ')
end
spin_done() click to toggle source
# File lib/greenhat/thing/spinner.rb, line 18
def spin_done
  # Ignore when Quiet is Set
  return true if Cli.quiet

  title = @spinner.tokens[:title]
  spin_end = humanize(@spin_time)

  title_update = if spin_end.blank?
                   title
                 else
                   "#{title} (#{spin_end.pastel(:blue)})"
                 end

  @spinner.update(title: title_update)
  @spinner.success
end
spin_start(title) click to toggle source
# File lib/greenhat/thing/spinner.rb, line 4
def spin_start(title)
  # Ignore when Quiet is Set
  return true if Cli.quiet

  @spin_time = Time.now
  @spinner = TTY::Spinner.new(
    "#{time.pastel(:bright_black)} - [:spinner] :title", hide_cursor: true, success_mark: '✔'.pastel(:green)
  )
  @spinner.update(title: title)

  # Don't Auto spin when debug output is happening
  @spinner.auto_spin unless ENV['DEBUG']
end
time() click to toggle source
# File lib/greenhat/thing/spinner.rb, line 35
def time
  Time.now.strftime('%I:%M:%S').pastel(:bright_black)
end