module KnifeHitori::InteractiveConfigure
Public Instance Methods
ask_ec2_config_all(knife, runtime=false)
click to toggle source
# File lib/knife-hitori/lib/interactive_configure.rb, line 5 def ask_ec2_config_all(knife, runtime=false) config = {} config[:aws_access_key_id] = input_arg('aws_access_key_id', knife[:aws_access_key_id], ENV['AWS_ACCESS_KEY_ID']) unless runtime config[:aws_secret_access_key] = input_arg('aws_secret_access_key', knife[:aws_secret_access_key], ENV['AWS_SECRET_ACCESS_KEY']) unless runtime config[:image] = input_arg('ami image', knife[:image], ENV['EC2_AMI_IMAGE']) config[:flavor] = input_arg('flavor', knife[:flavor], ENV['EC2_FLAVOR'], 'm1.small') config[:security_groups] = input_arg('Security Group', knife[:security_groups], ENV['EC2_SECURITY_GROUP'], 'default') config[:ssh_user] = input_arg('ssh_user', knife[:ssh_user], ENV['EC2_SSH_USER'], 'ec2-user') config[:identity_file] = k = input_arg('identity_file(*.pem)', knife[:identity_file], ENV['EC2_PRIVATE_KEY']) config[:aws_ssh_key_id] = input_arg('ssh_key_name', knife[:aws_ssh_key_id], ENV['EC2_SSH_KEY'], File.basename(k || '').sub(/\.pem$/, '')) config[:availability_zone] = input_arg('availability_zone', knife[:availability_zone], ENV['EC2_AVAILABILITY_ZONE']) config[:region] = input_arg('region', knife[:region], config[:availability_zone][0...-1], ENV['EC2_REGION']) config[:identity_file] = File.absolute_path(config[:identity_file]) if config[:identity_file] config[:template_file] = knife[:template_file] if runtime config[:ssh_port] = knife[:ssh_port] if runtime config end
input_arg(message, *defaults) { |input| ... }
click to toggle source
# File lib/knife-hitori/lib/interactive_configure.rb, line 23 def input_arg(message, *defaults) input = nil default = defaults.select { |x| !x.to_s.empty? }.first while true print "#{message} [#{default}] ? " input = STDIN.gets.strip input = input.empty? ? default : input break if not block_given? or yield(input) end input end