class Pfm::Command::Base

def deploy_setup

def deploy_setup
  Terraform::Binary.configure do |config|
    config.version = SETTINGS['TERRAFORM_VERSION']
    config.download_path = "/tmp/#{SecureRandom.uuid}"
  end
  raise InvalidRepository, 'This doesn\'t look like a valid infrastructure repository' unless File.directory? "#{inf_base_dir}/tf"
  config = Idlc::Deploy::Config.new(SETTINGS['AWS_REGION'])
  config.parse("#{inf_base_dir}/env/config/default.yml") if File.exist? "#{inf_base_dir}/env/config/default.yml"
  if ENV['PROD'] == 'true' || ENV['PROD'] == '1'
    config.parse("#{inf_base_dir}/env/config/prod.yml")
  else
    config.parse("#{inf_base_dir}/env/config/devtest.yml")
  end
  config.parse("#{inf_base_dir}/env/size/#{ENV['SIZE']}.yml") if File.exist? "#{inf_base_dir}/env/size/#{ENV['SIZE']}.yml"
  inf_conf_file = 'inf.config.yml'
  # For unit tests
  inf_conf_file = 'inf.config.example.yml' unless File.exist? inf_conf_file
  config.parse(inf_conf_file)
  bucket_name = Idlc::Deploy::Config.get_deployment_var('tfstate_bucket')
  sub_bucket = "#{Idlc::Deploy::Config.get_deployment_var('job_code')}"\
    "#{Idlc::Deploy::Config.get_deployment_var('job')}"\
    "-#{Idlc::Deploy::Config.get_deployment_var('env')}".freeze
  # Pass some ENV vars for Terraform
  Idlc::Deploy::Config.add_deployment_var('environment_key', sub_bucket)
  Idlc::Deploy::Config.add_deployment_var('version', REPO_VERSION)
  Idlc::Deploy::Config.add_deployment_var('major_minor', Idlc::Utility.major_minor(REPO_VERSION))
  Idlc::Deploy::Config.add_deployment_var('major_minor_patch', Idlc::Utility.major_minor_patch(REPO_VERSION))
  Idlc::Deploy::Config.add_deployment_var('build', @config[:server_build])
  Idlc::Deploy::Config.add_deployment_var('app_release', @config[:app_release])
  FileUtils.mkdir_p "inf/env/kp"
  download_private_key(bucket_name, sub_bucket, "#{inf_base_dir}/env/kp")
  Idlc::Deploy::Keypair.generate("#{inf_base_dir}/env/kp")
  @workspace.flatten("#{inf_base_dir}/tf", 'tf')
  @workspace.add("#{inf_base_dir}/env/kp")
  @workspace.add('lib/tf/modules')
  config.configure_state(bucket_name, sub_bucket, @workspace.tmp_dir)
end