Class: Terrafile::Dependency

Inherits:
Object
  • Object
show all
Defined in:
lib/terrafile/dependency.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, source:, version:) ⇒ Dependency

Returns a new instance of Dependency.



3
4
5
6
7
# File 'lib/terrafile/dependency.rb', line 3

def initialize(name:, source:, version:)
  @name = name
  @source = source
  @version = version
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/terrafile/dependency.rb', line 9

def name
  @name
end

#sourceObject (readonly)

Returns the value of attribute source.



9
10
11
# File 'lib/terrafile/dependency.rb', line 9

def source
  @source
end

#versionObject (readonly)

Returns the value of attribute version.



9
10
11
# File 'lib/terrafile/dependency.rb', line 9

def version
  @version
end

Class Method Details

.build_from_terrafileObject



11
12
13
14
15
16
17
18
19
# File 'lib/terrafile/dependency.rb', line 11

def self.build_from_terrafile
  (YAML.safe_load(File.read(TERRAFILE_PATH)) || []).map do |module_name, details|
    new(
      name: module_name,
      version: details['version'],
      source: details['source']
    )
  end
end

Instance Method Details

#checkoutObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/terrafile/dependency.rb', line 29

def checkout
  Dir.chdir(name) do
    Helper.run!("git checkout #{version} 1> /dev/null")
  end
rescue Error => error
  raise unless error.message.match?(/reference is not a tree/)

  Kernel.puts "[*] WARN: #{error} ." \
    "The 'version' should be the branch name or tag, rather than the SHA."
end

#fetchObject



21
22
23
24
25
26
27
# File 'lib/terrafile/dependency.rb', line 21

def fetch
  return Helper.clone(source, name) unless Helper.dir_exists?(name)

  Dir.chdir(name) do
    Helper.pull_repo unless Helper.repo_up_to_date?(version)
  end
end