Sha256: 7faf6be606d7ddeec889dd24bfe361e26437421b4852d80c58c81a7330893ffb

Contents?: true

Size: 1.29 KB

Versions: 23

Compression:

Stored size: 1.29 KB

Contents

module Terraspace::Terraform::Tfc
  class Sync < Terraspace::CLI::Base
    extend Memoist
    include Terraspace::Terraform::Api::Client

    # 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.
    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

    def workspace
      @api.workspace
    end

    def workspaces_backend?
      remote && remote['workspaces']
    end

    # already memoized in Api::Client
    def backend
      Terraspace::Compiler::Backend::Parser.new(@mod).result
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
terraspace-0.6.23 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.22 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.21 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.20 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.19 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.18 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.17 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.16 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.15 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.13 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.12 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.11 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.10 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.9 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.8 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.7 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.6 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.5 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.4 lib/terraspace/terraform/tfc/sync.rb
terraspace-0.6.3 lib/terraspace/terraform/tfc/sync.rb