class Aws::RiKanjoo::CLI

Public Class Methods

new() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 8
def initialize
  @options = {}
  @optparse = nil
  @cost = nil
end

Public Instance Methods

output() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 93
def output
  if @options[:output_json]
    output_json()
  else
    output_text()
  end
end
output_json() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 101
def output_json
  puts @cost.to_json
end
output_text() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 105
def output_text
  @cost.keys.each do |key|
    puts "#{key}: #{@cost[key]}"
  end
end
parse() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 20
def parse
  optparse = OptionParser.new do |opts|
    opts.banner = 'Usage: rikanjo ec2/rds [options]'

    # subcommand
    mode = ARGV.shift
    if mode == 'ec2'
    elsif mode == 'rds'
      opts.on('--multiaz', 'enable multi-az') do |value|
        @options[:multiaz] = value
      end
    else
      $stderr.puts "no such subcommand: #{mode}"
      puts opts
      exit 1
    end
    @options[:mode] = mode

    region_values = %w(us-east-1 us-west-1 us-west-2 eu-west-1 ap-southeast-1 ap-northeast-1 ap-southeast-2 sa-east-1 )
    opts.on('-r', '--region=VALUE', region_values, "specify aws-region (#{region_values.join('/')})") do |value|
      @options[:region] = value
    end

    opts.on('-t', '--instance_type=VALUE', 'specify ec2-instance-type') do |value|
      @options[:instance_type] = value
    end

    ri_util_values = %w(light medium heavy)
    opts.on('-u', '--ri_util=VALUE', ri_util_values, "specify ri-util (#{ri_util_values.join('/')})") do |value|
      @options[:ri_util] = value
    end

    opts.on('-j', '--output_json', "specify output_json flg") do |value|
      @options[:output_json] = value
    end

    opts.on('-h', '--help') do
      puts opts
      exit
    end
  end

  # validation
  begin
    optparse.parse!
    require_args = [:region, :instance_type, :ri_util]
    error_args = require_args.select { |param| @options[param].nil? }
    unless error_args.empty?
      puts "require arguments: #{error_args.join(', ')}"
      puts
      puts optparse
      exit
    end
  rescue
    puts $!.to_s
    puts
    puts optparse
    exit
  end
end
rikanjo() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 81
def rikanjo
  # rikanjo
  a = Aws::RiKanjoo::Base.new(
      mode = @options[:mode],
      region = @options[:region],
      instance_type = @options[:instance_type],
      ri_util = @options[:ri_util],
      multiaz = @options[:multiaz],
  )
  @cost = a.total_cost_year
end
start() click to toggle source
# File lib/aws/rikanjo/cli.rb, line 14
def start
  parse
  rikanjo
  output
end