class Terraspace::Terraform::Tfc::Sync

Public Instance Methods

backend() click to toggle source

already memoized in Api::Client

# File lib/terraspace/terraform/tfc/sync.rb, line 37
def backend
  Terraspace::Compiler::Backend::Parser.new(@mod).result
end
run() click to toggle source

Note about why workspace.create is called:

CLI::Init#run

init => runs `terraform init`
build_remote_dependencies
sync_cloud => leads to create_workspace

The `terraform init` will auto-create the TFC workspace If there is a .terraform folder the config.init.mode == “auto” though, then the workspace won't be created. So we check and create the workspace if necessary.

# File lib/terraspace/terraform/tfc/sync.rb, line 17
def run
  # Note: workspace still gets created by `terraform init` However, variables wont be sync if returns early
  return unless Terraspace.config.tfc.auto_sync || @options[:override_auto_sync]
  return unless workspaces_backend?
  logger.info "Syncing to Terraform Cloud: #{@mod.name} => #{workspace_name}"
  @api = Terraspace::Terraform::Api.new(@mod, remote)
  workspace.create_or_update
  workspace.set_working_dir
  workspace.set_env_vars
end
workspace() click to toggle source
# File lib/terraspace/terraform/tfc/sync.rb, line 28
def workspace
  @api.workspace
end
workspaces_backend?() click to toggle source
# File lib/terraspace/terraform/tfc/sync.rb, line 32
def workspaces_backend?
  remote && remote['workspaces']
end