Class: Terraspace::Compiler::Cleaner::BackendChange

Inherits:
Object
  • Object
show all
Includes:
Util
Defined in:
lib/terraspace/compiler/cleaner/backend_change.rb

Instance Method Summary collapse

Methods included from Util

#pretty_path

Methods included from Util::Sure

#sure?

Methods included from Util::Sh

#sh

Methods included from Util::Logging

#logger

Constructor Details

#initialize(mod, options = {}) ⇒ BackendChange

Returns a new instance of BackendChange.



5
6
7
# File 'lib/terraspace/compiler/cleaner/backend_change.rb', line 5

def initialize(mod, options={})
  @mod, @options = mod, options
end

Instance Method Details

#current_backendObject



29
30
31
32
# File 'lib/terraspace/compiler/cleaner/backend_change.rb', line 29

def current_backend
  materialized_path = find_src_path("#{@mod.cache_dir}/backend*")
  IO.read(materialized_path) if materialized_path
end

#fresh_backendObject



34
35
36
37
# File 'lib/terraspace/compiler/cleaner/backend_change.rb', line 34

def fresh_backend
  src_path = find_src_path("#{Terraspace.root}/config/terraform/backend*")
  Terraspace::Compiler::Strategy::Mod.new(@mod, src_path).run if src_path
end

#purgeObject



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/terraspace/compiler/cleaner/backend_change.rb', line 9

def purge
  return unless purge?

  cache_root = Terraspace::Util.pretty_path(Terraspace.cache_root)
  message ="    Backend change detected. Will remove \#{cache_root} for complete reinitialization\n    WARN: If you are using local storage for state, this will remove it.\n    Will remove \#{cache_root}\n  EOL\n  sure?(message.strip)\n  logger.info \"Backend change detected. Removing \#{cache_root} for complete reinitialization\"\n  FileUtils.rm_rf(Terraspace.cache_root)\nend\n"

#purge?Boolean

Whenever the backend is changed, purge the cache entirely

Returns:

  • (Boolean)


24
25
26
27
# File 'lib/terraspace/compiler/cleaner/backend_change.rb', line 24

def purge?
  return false unless current_backend
  current_backend != fresh_backend
end