Files
gemini-settings/tmp/dalmatian/tool-outputs/read_file_19.txt
2026-02-24 18:03:22 +00:00

67 lines
2.0 KiB
Plaintext

module Dalmatian
class Terraform
def self.fmt(args = nil)
Helper.run!("terraform fmt #{args}")
end
def self.init(upgrade: false)
cmd = "terraform init"
cmd << " -upgrade=true" if upgrade
Helper.run!(cmd)
end
def self.validate(var_file: "", tfvars: {})
cmd = tfvar_arg_string(tfvars)
cmd << " terraform validate"
cmd << " -var-file=#{var_file}" unless var_file.to_s.strip.empty?
Helper.run!(cmd)
end
def self.plan(var_file: "", tfvars: {}, verbose: false)
cmd = tfvar_arg_string(tfvars)
cmd << " terraform plan"
cmd << " -var-file=#{var_file}" unless var_file.to_s.strip.empty?
Logger.debug(cmd) if verbose
Helper.run!(cmd)
end
def self.apply(var_file: "", tfvars: {}, auto_approve: false, verbose: false)
cmd = tfvar_arg_string(tfvars)
cmd << " terraform apply"
cmd << " -var-file=#{var_file}" unless var_file.to_s.strip.empty?
cmd << " -auto-approve" if auto_approve
Logger.debug(cmd) if verbose
Helper.run!(cmd)
end
def self.destroy(var_file: "", tfvars: {}, verbose: false)
cmd = tfvar_arg_string(tfvars)
cmd << " terraform destroy"
cmd << " -var-file=#{var_file}" unless var_file.to_s.strip.empty?
Logger.debug(cmd) if verbose
Helper.run!(cmd)
end
def self.tfvar_arg_string(tfvars)
tfvars.map { |key, value|
value = value.to_json.gsub(/"([^"]+)":/, '\1 =') if value.respond_to?(:each)
"TF_VAR_#{key}='#{value}'"
}.join(" ")
end
def self.ensure_presence_of_workspace(workspace_name)
Logger.info("Creating #{workspace_name} workspace")
Helper.run!("terraform workspace new #{workspace_name}")
rescue Error
Logger.info("Selecting #{workspace_name} workspace")
Helper.run!("terraform workspace select #{workspace_name}")
end
def self.list_workspaces
Dir.chdir(Infrastructure::BOOTSTRAP_PATH) do
Helper.run!("terraform workspace list")
end
end
end
end