dependabot-terraform 0.148.10 → 0.149.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ed478756c01d88049afd53fc85a20ad7ed9063791ab30058d0f917e26dc47e5
4
- data.tar.gz: 72510b0297858ce6b4d417542100a6697d546a4e0e4d0d405e55a1e51796fb43
3
+ metadata.gz: 36c78f6a28ee4ff879140720e2ab9fa49a11fcec5d7c5312c18147051264e826
4
+ data.tar.gz: f7a0be0a203afd35b77a5e51b10bea90df77457caf15757640bc4e80d8bf108b
5
5
  SHA512:
6
- metadata.gz: 8c2c0a8a731d1ff0baf8ce05af819e819702be48302173d12e6973b84af8e304fe75cdb323198f28d4a20358c836a8edb699659bf5db3232944334cd76f7e735
7
- data.tar.gz: 4a651ed95e4d097100595c457146faba5e097ea12b1f7ebecbd38156bd55c7f51ec07fdb84c0a07ff8defdcd4546c92376571ffc5b3e322bfd68402e33ddeec0
6
+ metadata.gz: dad9fdb36c1eb15daf45f6a972c005a918f90e146c9349c191051ed83a469b7b92cf8e93b7418e93b4ed74aa19f6a2844bbdbc99cdd8f28bdc406902e3fb1ffc
7
+ data.tar.gz: 19601275314f1221d25009a6b732ec3a1b61f24c24579d1ad95fc5d83a5e8f2a3b54d6990c7b310e439364a9a68a45a3503329e9217eb5b0fa732d73c36dac1e
@@ -4,6 +4,7 @@ require "excon"
4
4
  require "json"
5
5
  require "dependabot/metadata_finders"
6
6
  require "dependabot/metadata_finders/base"
7
+ require "dependabot/terraform/registry_client"
7
8
  require "dependabot/shared_helpers"
8
9
 
9
10
  module Dependabot
@@ -40,7 +41,9 @@ module Dependabot
40
41
  info = dependency.requirements.map { |r| r[:source] }.compact.first
41
42
  hostname = info[:registry_hostname] || info["registry_hostname"]
42
43
 
43
- RegistryClient.new(hostname: hostname).source(dependency: dependency)
44
+ RegistryClient.
45
+ new(hostname: hostname, credentials: credentials).
46
+ source(dependency: dependency)
44
47
  end
45
48
  end
46
49
  end
@@ -11,8 +11,11 @@ module Dependabot
11
11
  class RegistryClient
12
12
  PUBLIC_HOSTNAME = "registry.terraform.io"
13
13
 
14
- def initialize(hostname:)
14
+ def initialize(hostname: PUBLIC_HOSTNAME, credentials: [])
15
15
  @hostname = hostname
16
+ @tokens = credentials.each_with_object({}) do |item, memo|
17
+ memo[item["host"]] = item["token"] if item["type"] == "terraform_registry"
18
+ end
16
19
  end
17
20
 
18
21
  # Fetch all the versions of a provider, and return a Version
@@ -23,9 +26,6 @@ module Dependabot
23
26
  # @return [Array<Dependabot::Terraform::Version>]
24
27
  # @raise [RuntimeError] when the versions cannot be retrieved
25
28
  def all_provider_versions(identifier:)
26
- # TODO: Implement service discovery for custom registries
27
- return [] unless hostname == PUBLIC_HOSTNAME
28
-
29
29
  response = get(endpoint: "providers/#{identifier}/versions")
30
30
 
31
31
  JSON.parse(response).
@@ -41,9 +41,6 @@ module Dependabot
41
41
  # @return [Array<Dependabot::Terraform::Version>]
42
42
  # @raise [RuntimeError] when the versions cannot be retrieved
43
43
  def all_module_versions(identifier:)
44
- # TODO: Implement service discovery for custom registries
45
- return [] unless hostname == PUBLIC_HOSTNAME
46
-
47
44
  response = get(endpoint: "modules/#{identifier}/versions")
48
45
 
49
46
  JSON.parse(response).
@@ -61,9 +58,6 @@ module Dependabot
61
58
  # @return Dependabot::Source
62
59
  # @raise [RuntimeError] when the source cannot be retrieved
63
60
  def source(dependency:)
64
- # TODO: Implement service discovery for custom registries
65
- return unless hostname == PUBLIC_HOSTNAME
66
-
67
61
  type = dependency.requirements.first[:source][:type]
68
62
  endpoint = if type == "registry"
69
63
  "modules/#{dependency.name}/#{dependency.version}"
@@ -80,7 +74,7 @@ module Dependabot
80
74
 
81
75
  private
82
76
 
83
- attr_reader :hostname
77
+ attr_reader :hostname, :tokens
84
78
 
85
79
  def get(endpoint:)
86
80
  url = "https://#{hostname}/v1/#{endpoint}"
@@ -88,7 +82,7 @@ module Dependabot
88
82
  response = Excon.get(
89
83
  url,
90
84
  idempotent: true,
91
- **SharedHelpers.excon_defaults
85
+ **SharedHelpers.excon_defaults(headers: headers_for(hostname))
92
86
  )
93
87
 
94
88
  raise "Response from registry was #{response.status}" unless response.status == 200
@@ -99,6 +93,11 @@ module Dependabot
99
93
  def version_class
100
94
  Version
101
95
  end
96
+
97
+ def headers_for(hostname)
98
+ token = tokens[hostname]
99
+ token ? { "Authorization" => "Bearer #{token}" } : {}
100
+ end
102
101
  end
103
102
  end
104
103
  end
@@ -87,7 +87,7 @@ module Dependabot
87
87
  def registry_client
88
88
  @registry_client ||= begin
89
89
  hostname = dependency_source_details.fetch(:registry_hostname)
90
- RegistryClient.new(hostname: hostname)
90
+ RegistryClient.new(hostname: hostname, credentials: credentials)
91
91
  end
92
92
  end
93
93
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-terraform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.148.10
4
+ version: 0.149.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.148.10
19
+ version: 0.149.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.148.10
26
+ version: 0.149.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: byebug
29
29
  requirement: !ruby/object:Gem::Requirement