class RakeTerraform::TaskSets::Provider

rubocop:disable Metrics/ClassLength

Attributes

delegate[R]

Public Class Methods

define(*args, &configuration_block) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 10
def self.define(*args, &configuration_block)
  new(*args, &configuration_block).define_on(Rake.application)
end
new(*args, &configuration_block) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 16
def initialize(*args, &configuration_block)
  @opts = args[0]
  @delegate = RakeDependencies::TaskSets::All.new(
    task_set_opts, &configuration_block
  )
end

Public Instance Methods

define_on(application) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 23
def define_on(application)
  Rake.application.in_namespace parent_namespace do
    Rake.application.in_namespace :providers do
      @delegate.define_on(application)
    end
  end
  self
end

Private Instance Methods

binary() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 103
def binary
  @binary ||= File.join(path, binary_directory, binary_name)
end
binary_directory() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 95
def binary_directory
  @binary_directory ||= 'bin'
end
binary_name() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 99
def binary_name
  @binary_name ||= "#{dependency}_v#{version}"
end
dependency() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 83
def dependency
  @dependency ||= "terraform-provider-#{name}"
end
exist?(binary) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 144
def exist?(binary)
  log_binary_location(binary)

  result = File.exist?(binary)

  log_check_outcome(result)

  result
end
file_name_template() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 123
def file_name_template
  @file_name_template ||=
    "#{dependency}_v<%= @version %>_<%= @os_id %>_amd64<%= @ext %>"
end
installation_directory() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 136
def installation_directory
  @installation_directory ||= "#{ENV['HOME']}/.terraform.d/plugins"
end
log_binary_location(binary) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 154
def log_binary_location(binary)
  logger.info(
    "Terraform provider binary for: #{name} " \
                       "should be at: #{binary}"
  )
end
log_check_outcome(result) click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 161
def log_check_outcome(result)
  logger.debug("Provider file exists?: #{result}")
end
logger() click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/rake_terraform/task_sets/provider.rb, line 60
def logger
  @logger ||=
    @opts[:logger] ||
    Logger.new($stderr,
               level: Logger.const_get(ENV['TF_LOG'] || 'WARN'))
end
name() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 67
def name
  @name ||= @opts[:name]
end
namespace() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 79
def namespace
  @namespace ||= @opts[:namespace] || name
end
needs_fetch() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 140
def needs_fetch
  @needs_fetch ||= ->(_) { return !exist?(binary) }
end
os_ids() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 111
def os_ids
  @os_ids ||= { mac: 'darwin', linux: 'linux' }
end
parent_namespace() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 75
def parent_namespace
  @parent_namespace ||= @opts[:parent_namespace] || :terraform
end
path() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 91
def path
  @path ||= @opts[:path] || File.join('vendor', dependency)
end
repository() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 71
def repository
  @repository ||= @opts[:repository]
end
source_binary_name_template() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 128
def source_binary_name_template
  @source_binary_name_template ||= dependency
end
target_binary_name_template() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 132
def target_binary_name_template
  @target_binary_name_template ||= "#{dependency}_v<%= @version %>"
end
task_set_opts() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/rake_terraform/task_sets/provider.rb, line 36
def task_set_opts
  {
    namespace: namespace,
    dependency: dependency,
    version: version,
    path: path,
    type: type,

    os_ids: os_ids,

    uri_template: uri_template,
    file_name_template: file_name_template,

    source_binary_name_template: source_binary_name_template,
    target_binary_name_template: target_binary_name_template,

    installation_directory: installation_directory,

    needs_fetch: needs_fetch
  }
end
type() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 107
def type
  @type ||= :tar_gz
end
uri_template() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 115
def uri_template
  @uri_template ||=
    "https://github.com/#{repository}/releases/" \
        'download/<%= @version %>/' \
        "#{dependency}_v<%= @version %>_<%= @os_id %>" \
        '_amd64<%= @ext %>'
end
version() click to toggle source
# File lib/rake_terraform/task_sets/provider.rb, line 87
def version
  @version ||= @opts[:version]
end