class Genesis::Cli

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/genesis/cli.rb, line 65
def initialize(*args)
  super

  @aws_access_key = ENV['AWS_ACCESS_KEY']
  @aws_secret_key = ENV['AWS_SECRET_KEY']
  @aws_key_pair = ENV['AWS_KEY_PAIR']
  @prompt = options[:prompt]
  @terraform_dir = options[:terraform_dir]
  @vars = options[:vars]

  validate_environment_variables
  validate_path
  validate_terraform_directory
end

Public Instance Methods

apply() click to toggle source
# File lib/genesis/cli.rb, line 19
def apply
  confirmed = if @prompt
    message = 'Are you sure you want to apply changes? (y/n)'
    yes?(message, :red)
  else
    true
  end

  system apply_command if confirmed
end
destroy() click to toggle source
# File lib/genesis/cli.rb, line 36
def destroy
  plan_created = system destroy_plan_command
  exit(1) unless plan_created

  confirmed = if @prompt
    yes?('Are you sure you want to destroy infrastructure? (y/n)', :red)
  else
    true
  end

  system apply_plan_command if confirmed
  File.delete(plan_file) if File.exist?(plan_file)
end
plan() click to toggle source
# File lib/genesis/cli.rb, line 14
def plan
  system plan_command
end
refresh() click to toggle source
# File lib/genesis/cli.rb, line 9
def refresh
  system refresh_command
end
show() click to toggle source
# File lib/genesis/cli.rb, line 31
def show
  system show_command
end

Private Instance Methods

plan_file() click to toggle source
# File lib/genesis/cli.rb, line 125
def plan_file
  File.join(@terraform_dir, 'terraform.tfplan')
end
state_file() click to toggle source
# File lib/genesis/cli.rb, line 121
def state_file
  File.join(@terraform_dir, 'terraform.tfstate')
end
validate_environment_variables() click to toggle source
# File lib/genesis/cli.rb, line 82
def validate_environment_variables
  # Check for required environment variables
  required_variables = %w[
    AWS_ACCESS_KEY
    AWS_SECRET_KEY
    AWS_KEY_PAIR
  ]

  required_variables.each do |variable|
    unless ENV.member? variable
      $stderr.puts "Missing required environment variable: '#{variable}'"
      exit(1)
    end
  end
end
validate_path() click to toggle source
# File lib/genesis/cli.rb, line 98
def validate_path
  # Check for required executables on the system path
  required_executables = %w[terraform]

  required_executables.each do |name|
    next unless /#{name}/.match(ENV['PATH']).nil?

    message = "Missing required executable on system path: '#{name}'"
    $stderr.puts message
    exit(1)
  end
end
validate_terraform_directory() click to toggle source
# File lib/genesis/cli.rb, line 111
def validate_terraform_directory
  # Check that terraform directory is present
  path = File.join(@terraform_dir)

  return if Dir.exist? path

  $stderr.puts "Unable to find terraform directory: #{path}"
  exit(1)
end