Module: Terradactyl::Terraform::VersionManager
- Extended by:
- Forwardable
- Defined in:
- lib/terradactyl/terraform/version_manager.rb,
lib/terradactyl/terraform/version_manager/binary.rb,
lib/terradactyl/terraform/version_manager/package.rb,
lib/terradactyl/terraform/version_manager/defaults.rb,
lib/terradactyl/terraform/version_manager/inventory.rb,
lib/terradactyl/terraform/version_manager/downloader.rb
Overview
rubocop:disable Metrics/ModuleLength
Defined Under Namespace
Modules: Package
Classes: Binary, Defaults, Downloader, Inventory, InventoryError, VersionManagerError
Constant Summary
collapse
- ERROR_MISSING =
'Terraform not installed'
- ERROR_INVALID_VERSION_STRING =
'Invalid version string'
- ERROR_UNRESOLVABLE_VERSION =
'Unresolvable version string'
- ERROR_UNPARSEABLE_VERSION =
'Unparsable version string'
- SEMVER_EXP_RE =
/
^\s*((?<op>(=|<=|>=|>|<|~>))\s+)?
(?<semver>\d+(\.\d+)?(\.\d+)?(-\w+)?)
/x.freeze
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.inventory ⇒ Object
Returns the value of attribute inventory.
39
40
41
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 39
def inventory
@inventory
end
|
Class Method Details
.binary ⇒ Object
45
46
47
48
49
50
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 45
def binary
return inventory.validate(current_version) if version
return inventory[inventory.latest] if inventory.any?
raise VersionManagerError, ERROR_MISSING
end
|
.current_version ⇒ Object
68
69
70
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 68
def current_version
resolve(version)
end
|
.install(semver = nil, type: Binary) ⇒ Object
56
57
58
59
60
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 56
def install(semver = nil, type: Binary)
semver ||= version
package = type.new(version: resolve(semver))
package.install
end
|
.latest ⇒ Object
52
53
54
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 52
def latest
calculate_latest
end
|
.options ⇒ Object
41
42
43
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 41
def options
block_given? ? yield(@options) : @options
end
|
.remove(semver = nil, type: Binary) ⇒ Object
62
63
64
65
66
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 62
def remove(semver = nil, type: Binary)
semver ||= version
package = type.new(version: resolve(semver))
package.remove
end
|
.resolve(expression) ⇒ Object
82
83
84
85
86
87
88
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 82
def resolve(expression)
unless (resolution = resolve_expression(expression.to_s.strip))
raise VersionManagerError, ERROR_UNRESOLVABLE_VERSION
end
resolution
end
|
.versions(local: true) ⇒ Object
72
73
74
75
76
77
78
79
80
|
# File 'lib/terradactyl/terraform/version_manager.rb', line 72
def versions(local: true)
return inventory.versions if local
remote_versions
rescue StandardError
warn "Failed to retrieve releases [#{releases_url}]"
warn "Falling back to local inventory [#{install_dir}]"
inventory.versions
end
|