Sha256: 46e5e20e8271eca2a260fc2da38593f264b45b78ec31ff9bdeecc0b9faf1ae08
Contents?: true
Size: 1.63 KB
Versions: 1
Compression:
Stored size: 1.63 KB
Contents
require 'thread' module Percheron module Formatters module Stack class Table def initialize(stack) @stack = stack @queue = Queue.new end def generate Terminal::Table.new(title: title, headings: headings, rows: rows) end private attr_reader :stack, :queue def title stack.name end def headings [ 'Container', 'ID', 'Running?', 'IP', 'Ports', 'Volumes', 'Version' ] end def rows queue_jobs process_queue! end def queue_jobs stack.units.map { |_, unit| queue << row_for(unit) } end def process_queue! resp = [] 4.times.map do Thread.new do queue.size.times { resp << queue.pop(true) } end end.map(&:join) resp end def row_for(unit) [ unit.name, unit.id, startable(unit), unit.ip, unit.ports.join(', '), unit.volumes.join(', '), version(unit) ] end def version(unit) (unit.built_version == '0.0.0') ? '' : unit.built_version end def startable(unit) if unit.startable? unit.running? ? 'yes' : '-' else 'n/a' end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
percheron-0.7.7 | lib/percheron/formatters/stack/table.rb |