class ProspectusTerraform::Lookup

Lookup object to find providers

Constants

PROVIDER_REGEX
REPO_REGEX

Public Instance Methods

cmd_name() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 23
def cmd_name
  'terraform-config-inspect --json'
end
config_json() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 16
def config_json
  return @config_json if @config_json
  stdout, stderr, status = Open3.capture3(cmd_name)
  raise("#{cmd_name} failed") unless status.success? && stderr.empty?
  @config_json = stdout
end
default_repo(name) click to toggle source
# File lib/prospectus_terraform/providers.rb, line 45
def default_repo(name)
  "terraform-providers/terraform-provider-#{name}"
end
match_to_hash(lines, regex) click to toggle source
# File lib/prospectus_terraform/providers.rb, line 41
def match_to_hash(lines, regex)
  lines.map { |x| x.match(regex) }.compact.map { |x| [x[1], x[2]] }.to_h
end
providers() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 27
def providers
  @providers ||= JSON.parse(config_json)['required_providers'].map do |k, v|
    [k, v.first]
  end
end
repo_lines() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 37
def repo_lines
  @repo_lines ||= File.read('main.tf').lines
end
repos() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 33
def repos
  @repos ||= match_to_hash(repo_lines, REPO_REGEX)
end
results() click to toggle source
# File lib/prospectus_terraform/providers.rb, line 10
def results
  @results ||= providers.map do |name, version|
    [name, version, repos[name] || default_repo(name)]
  end
end