class Capistrano::Aws::EC2::InstancesTable

Generates instances table.

Public Class Methods

new(instances) click to toggle source
# File lib/capistrano/aws/ec2/instances_table.rb, line 9
def initialize(instances)
  @instances = instances.sort_by do |_id, instance|
    Capistrano::Aws::EC2.parse_tag(instance, fetch(:aws_ec2_name_tag))
  end
end

Public Instance Methods

header_row() click to toggle source
# File lib/capistrano/aws/ec2/instances_table.rb, line 35
def header_row
  [
    'Num'.colorize(mode: :bold),
    'ID'.colorize(mode: :bold),
    'Name'.colorize(mode: :bold),
    'Type'.colorize(mode: :bold),
    'Contact Point'.colorize(mode: :bold),
    'Availability Zone'.colorize(mode: :bold),
    'Roles'.colorize(mode: :bold),
    'Stages'.colorize(mode: :bold)
  ]
end
instance_row(number, instance) click to toggle source
# File lib/capistrano/aws/ec2/instances_table.rb, line 48
def instance_row(number, instance)
  [
    format('%02d:', number),
    instance.id.colorize(:red),
    Capistrano::Aws::EC2.parse_tag(instance, fetch(:aws_ec2_name_tag)).colorize(:green),
    instance.instance_type.colorize(:cyan),
    Capistrano::Aws::EC2.contact_point(instance).colorize(:blue),
    instance.placement.availability_zone.colorize(:magenta),
    Capistrano::Aws::EC2.parse_tag(instance, fetch(:aws_ec2_roles_tag)).colorize(:yellow),
    Capistrano::Aws::EC2.parse_tag(instance, fetch(:aws_ec2_stage_tag)).colorize(:yellow)
  ]
end
render() click to toggle source
# File lib/capistrano/aws/ec2/instances_table.rb, line 15
def render
  table = Terminal::Table.new(
    style: {
      border_x: '',
      border_i: '',
      border_y: ''
    }
  )

  table.add_row header_row

  number = 1
  @instances.each do |_id, instance|
    table.add_row instance_row(number, instance)
    number += 1
  end

  puts table
end