dependabot-common 0.384.0 → 0.386.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -97,10 +97,10 @@ module Dependabot
97
97
  sig { returns(T.nilable(String)) }
98
98
  attr_reader :signature_key
99
99
 
100
- sig { returns(T::Hash[Symbol, T.untyped]) }
100
+ sig { returns(T::Hash[Symbol, T.anything]) }
101
101
  attr_reader :commit_message_options
102
102
 
103
- sig { returns(T::Hash[String, String]) }
103
+ sig { returns(T::Hash[String, T::Array[T::Hash[String, String]]]) }
104
104
  attr_reader :vulnerabilities_fixed
105
105
 
106
106
  AzureReviewers = T.type_alias { T.nilable(T::Array[String]) }
@@ -126,13 +126,22 @@ module Dependabot
126
126
  sig { returns(T.nilable(Integer)) }
127
127
  attr_reader :branch_name_max_length
128
128
 
129
+ sig { returns(T.nilable(String)) }
130
+ attr_reader :branch_name_word_separator
131
+
132
+ sig { returns(T.nilable(String)) }
133
+ attr_reader :branch_name_case
134
+
135
+ sig { returns(T.nilable(String)) }
136
+ attr_reader :branch_name_template
137
+
129
138
  sig { returns(String) }
130
139
  attr_reader :github_redirection_service
131
140
 
132
141
  sig { returns(T.nilable(T::Hash[String, String])) }
133
142
  attr_reader :custom_headers
134
143
 
135
- sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
144
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
136
145
  attr_reader :provider_metadata
137
146
 
138
147
  sig { returns(T.nilable(Dependabot::DependencyGroup)) }
@@ -144,7 +153,7 @@ module Dependabot
144
153
  sig { returns(T.nilable(Encoding)) }
145
154
  attr_reader :pr_message_encoding
146
155
 
147
- sig do
156
+ sig do # rubocop:disable Metrics/BlockLength
148
157
  params(
149
158
  source: Dependabot::Source,
150
159
  base_commit: String,
@@ -156,20 +165,23 @@ module Dependabot
156
165
  custom_labels: T.nilable(T::Array[String]),
157
166
  author_details: T.nilable(T::Hash[Symbol, String]),
158
167
  signature_key: T.nilable(String),
159
- commit_message_options: T::Hash[Symbol, T.untyped],
160
- vulnerabilities_fixed: T::Hash[String, String],
168
+ commit_message_options: T::Hash[Symbol, T.anything],
169
+ vulnerabilities_fixed: T::Hash[String, T::Array[T::Hash[String, String]]],
161
170
  reviewers: Reviewers,
162
171
  assignees: T.nilable(T.any(T::Array[String], T::Array[Integer])),
163
172
  milestone: T.nilable(T.any(T::Array[String], Integer)),
164
173
  branch_name_separator: String,
165
174
  branch_name_prefix: String,
166
175
  branch_name_max_length: T.nilable(Integer),
176
+ branch_name_word_separator: T.nilable(String),
177
+ branch_name_case: T.nilable(String),
178
+ branch_name_template: T.nilable(String),
167
179
  label_language: T::Boolean,
168
180
  automerge_candidate: T::Boolean,
169
181
  github_redirection_service: String,
170
182
  custom_headers: T.nilable(T::Hash[String, String]),
171
183
  require_up_to_date_base: T::Boolean,
172
- provider_metadata: T.nilable(T::Hash[Symbol, T.untyped]),
184
+ provider_metadata: T.nilable(T::Hash[Symbol, T.anything]),
173
185
  message: T.nilable(
174
186
  T.any(Dependabot::PullRequestCreator::Message, Dependabot::PullRequestCreator::MessageBuilder)
175
187
  ),
@@ -198,6 +210,9 @@ module Dependabot
198
210
  branch_name_separator: "/",
199
211
  branch_name_prefix: "dependabot",
200
212
  branch_name_max_length: 100,
213
+ branch_name_word_separator: nil,
214
+ branch_name_case: nil,
215
+ branch_name_template: nil,
201
216
  label_language: false,
202
217
  automerge_candidate: false,
203
218
  github_redirection_service: DEFAULT_GITHUB_REDIRECTION_SERVICE,
@@ -227,6 +242,9 @@ module Dependabot
227
242
  @branch_name_separator = branch_name_separator
228
243
  @branch_name_prefix = branch_name_prefix
229
244
  @branch_name_max_length = branch_name_max_length
245
+ @branch_name_word_separator = branch_name_word_separator
246
+ @branch_name_case = branch_name_case
247
+ @branch_name_template = branch_name_template
230
248
  @label_language = label_language
231
249
  @automerge_candidate = automerge_candidate
232
250
  @github_redirection_service = github_redirection_service
@@ -253,7 +271,7 @@ module Dependabot
253
271
  # TODO: This returns client-specific objects.
254
272
  # We should create a standard interface (`Dependabot::PullRequest`) and
255
273
  # then convert to that
256
- sig { returns(T.untyped) }
274
+ sig { returns(T.anything) }
257
275
  def create
258
276
  case source.provider
259
277
  when "github" then github_creator.create
@@ -420,6 +438,9 @@ module Dependabot
420
438
  separator: branch_name_separator,
421
439
  prefix: branch_name_prefix,
422
440
  max_length: branch_name_max_length,
441
+ word_separator: branch_name_word_separator,
442
+ branch_name_case: branch_name_case,
443
+ template: branch_name_template,
423
444
  includes_security_fixes: includes_security_fixes?
424
445
  ),
425
446
  T.nilable(Dependabot::PullRequestCreator::BranchNamer)
@@ -21,8 +21,8 @@ module Dependabot
21
21
  sig do
22
22
  params(
23
23
  url: String,
24
- headers: T::Hash[T.any(String, Symbol), T.untyped],
25
- options: T::Hash[Symbol, T.untyped]
24
+ headers: T::Hash[T.any(String, Symbol), T.anything],
25
+ options: T::Hash[Symbol, T.anything]
26
26
  )
27
27
  .returns(Excon::Response)
28
28
  end
@@ -43,8 +43,8 @@ module Dependabot
43
43
  sig do
44
44
  params(
45
45
  url: String,
46
- headers: T::Hash[T.any(String, Symbol), T.untyped],
47
- options: T::Hash[Symbol, T.untyped]
46
+ headers: T::Hash[T.any(String, Symbol), T.anything],
47
+ options: T::Hash[Symbol, T.anything]
48
48
  )
49
49
  .returns(Excon::Response)
50
50
  end
@@ -9,14 +9,14 @@ module Dependabot
9
9
  extend T::Sig
10
10
  extend T::Generic
11
11
 
12
- sig { returns(T.nilable(T::Array[T.proc.params(name: String, params: T::Hash[Symbol, T.untyped]).void])) }
12
+ sig { returns(T.nilable(T::Array[T.proc.params(name: String, params: T::Hash[Symbol, T.anything]).void])) }
13
13
  attr_accessor :subscribers
14
14
 
15
- sig { params(block: T.proc.params(name: String, params: T::Hash[Symbol, T.untyped]).void).void }
15
+ sig { params(block: T.proc.params(name: String, params: T::Hash[Symbol, T.anything]).void).void }
16
16
  def subscribe(&block)
17
17
  @subscribers ||= T.let(
18
18
  [],
19
- T.nilable(T::Array[T.proc.params(name: String, params: T::Hash[Symbol, T.untyped]).void])
19
+ T.nilable(T::Array[T.proc.params(name: String, params: T::Hash[Symbol, T.anything]).void])
20
20
  )
21
21
  @subscribers << block
22
22
  end
@@ -25,7 +25,7 @@ module Dependabot
25
25
  type_parameters(:T)
26
26
  .params(
27
27
  name: String,
28
- params: T::Hash[Symbol, T.untyped],
28
+ params: T::Hash[Symbol, T.anything],
29
29
  block: T.proc.returns(T.type_parameter(:T))
30
30
  )
31
31
  .returns(T.nilable(T.type_parameter(:T)))
@@ -126,16 +126,36 @@ module Dependabot
126
126
  )
127
127
  end
128
128
 
129
+ @github_enterprise_cache = T.let({}, T::Hash[String, T::Boolean])
130
+
131
+ sig { void }
132
+ def self.reset_github_enterprise_cache!
133
+ @github_enterprise_cache.clear
134
+ end
135
+
129
136
  sig { params(base_url: String).returns(T::Boolean) }
130
137
  def self.github_enterprise?(base_url)
138
+ return T.must(@github_enterprise_cache[base_url]) if @github_enterprise_cache.key?(base_url)
139
+
140
+ result = detect_github_enterprise(base_url)
141
+ @github_enterprise_cache[base_url] = result unless result.nil?
142
+ result || false
143
+ end
144
+
145
+ sig { params(base_url: String).returns(T.nilable(T::Boolean)) }
146
+ def self.detect_github_enterprise(base_url)
131
147
  resp = Excon.get(File.join(base_url, "status"))
132
- resp.status == 200 &&
133
- # Alternatively: resp.headers["Server"] == "GitHub.com", but this
134
- # currently doesn't work with development environments
135
- ((resp.headers["X-GitHub-Request-Id"] && !resp.headers["X-GitHub-Request-Id"]&.empty?) || false)
148
+ return false if resp.status == 404
149
+
150
+ return unless resp.status == 200
151
+
152
+ # Alternatively: resp.headers["Server"] == "GitHub.com", but this
153
+ # currently doesn't work with development environments
154
+ (resp.headers["X-GitHub-Request-Id"] && !resp.headers["X-GitHub-Request-Id"]&.empty?) || false
136
155
  rescue StandardError
137
- false
156
+ nil
138
157
  end
158
+ private_class_method :detect_github_enterprise
139
159
 
140
160
  sig do
141
161
  params(
@@ -46,7 +46,7 @@ module Dependabot
46
46
  sig { returns(T.nilable(Dependabot::Package::ReleaseCooldownOptions)) }
47
47
  attr_reader :update_cooldown
48
48
 
49
- sig { returns(T::Hash[Symbol, T.untyped]) }
49
+ sig { returns(T::Hash[Symbol, T.anything]) }
50
50
  attr_reader :options
51
51
 
52
52
  sig do
@@ -61,7 +61,7 @@ module Dependabot
61
61
  requirements_update_strategy: T.nilable(Dependabot::RequirementsUpdateStrategy),
62
62
  dependency_group: T.nilable(Dependabot::DependencyGroup),
63
63
  update_cooldown: T.nilable(Dependabot::Package::ReleaseCooldownOptions),
64
- options: T::Hash[Symbol, T.untyped]
64
+ options: T::Hash[Symbol, T.anything]
65
65
  )
66
66
  .void
67
67
  end
@@ -233,7 +233,7 @@ module Dependabot
233
233
  # instances are returned as-is; plain hashes are wrapped. Re-wrapping
234
234
  # would produce a value-equal copy, so skipping it avoids needless
235
235
  # allocations.
236
- sig { params(requirements: T::Array[T::Hash[Symbol, T.untyped]]).returns(T::Array[Dependabot::DependencyRequirement]) }
236
+ sig { params(requirements: T::Array[T::Hash[Symbol, T.anything]]).returns(T::Array[Dependabot::DependencyRequirement]) }
237
237
  def wrap_requirements(requirements)
238
238
  requirements.map do |requirement|
239
239
  requirement.is_a?(Dependabot::DependencyRequirement) ? requirement : Dependabot::DependencyRequirement.create(requirement)
@@ -406,7 +406,7 @@ module Dependabot
406
406
  version_class.correct?(latest_version.to_s)) || false
407
407
  end
408
408
 
409
- sig { returns(T::Array[T::Hash[Symbol, T.untyped]]) }
409
+ sig { returns(T::Array[Dependabot::DependencyRequirement]) }
410
410
  def changed_requirements
411
411
  (updated_requirements - dependency.requirements)
412
412
  end
data/lib/dependabot.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Dependabot
5
- VERSION = "0.384.0"
5
+ VERSION = "0.386.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-common
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.384.0
4
+ version: 0.386.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -574,6 +574,7 @@ files:
574
574
  - lib/dependabot/pull_request_creator.rb
575
575
  - lib/dependabot/pull_request_creator/azure.rb
576
576
  - lib/dependabot/pull_request_creator/bitbucket.rb
577
+ - lib/dependabot/pull_request_creator/branch_name_template.rb
577
578
  - lib/dependabot/pull_request_creator/branch_namer.rb
578
579
  - lib/dependabot/pull_request_creator/branch_namer/base.rb
579
580
  - lib/dependabot/pull_request_creator/branch_namer/dependency_group_strategy.rb
@@ -621,7 +622,7 @@ licenses:
621
622
  - MIT
622
623
  metadata:
623
624
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
624
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.384.0
625
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.386.0
625
626
  rdoc_options: []
626
627
  require_paths:
627
628
  - lib