class Pec2::CLI

Public Class Methods

new(args = [], options = {}, config = {}) click to toggle source
Calls superclass method
# File lib/pec2/cli.rb, line 12
def initialize(args = [], options = {}, config = {})
  super(args, options, config)
  @global_options = config[:shell].base.options
  @core = Ec2.new(profile: @global_options[:profile])
  @logger = Logger.new(STDOUT)
end

Public Instance Methods

run_command() click to toggle source
# File lib/pec2/cli.rb, line 29
def run_command
  addresses = @core.instances_hash(options[:tag]).map do |instance|
    if options[:resolve] == 'private_ip_address'
      instance.private_ip_address
    elsif options[:resolve] == 'public_ip_address'
      instance.public_ip_address
    elsif options[:resolve] == 'name_tag'
      instance.tags.select{|tag| tag["key"] == "Name" }.first["value"]
    end
  end

  if addresses.empty?
    @logger.info(%Q{no host tag #{options[:tag]}.})
    exit
  end

  @logger.info(%Q{connection size #{addresses.size}.})
  @logger.info(%Q{listing connection to #{addresses.join(', ')}.})

  pssh = Pssh.new(options, addresses, addresses.size)

  file_command = options[:file] ? File.read(options[:file]) : nil
  command = options[:command] || file_command
  interactive = command ? false : true

  if interactive
    while true
      command = ask(">:")
      pssh.exec_pssh_command(command)
    end
  else
    ret = pssh.exec_pssh_command(command)
    unless ret
      exit 1
    end
  end
end
version() click to toggle source
# File lib/pec2/cli.rb, line 68
def version
  puts VERSION
end