dependabot-common 0.364.0 → 0.365.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.
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f60295381915191cca0d05b7be5c04af89cbe52a0f3df889e8365503d9d23ab6
|
|
4
|
+
data.tar.gz: 6cce9d750a9d91859998a579d9701329ed3bfc40ce63edf21c4c7cd7659e2ca1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7b6a7a215197bbfc58f9652bb25c4e240d4ca82cb2cf693e9bba403546a26f97507b18c3456ccacf07ae140b85a975f44ccf3775ffd1747e7a2f943f88796076
|
|
7
|
+
data.tar.gz: 6da0b1e735407a95fb73d30588cdb9c4c31e84239cd049e91c5c3cbc70e8113525c5e56e3d70ccac910be6a43ebb8d425cc948c2da2e332483ba081faabd4442
|
|
@@ -14,6 +14,10 @@ module Dependabot
|
|
|
14
14
|
)
|
|
15
15
|
@display_name_builders = T.let({}, T::Hash[String, T.proc.params(arg0: String).returns(String)])
|
|
16
16
|
@name_normalisers = T.let({}, T::Hash[String, T.proc.params(arg0: String).returns(String)])
|
|
17
|
+
@humanized_previous_version_builders = T.let(
|
|
18
|
+
{},
|
|
19
|
+
T::Hash[String, T.proc.params(arg0: Dependency).returns(T.nilable(String))]
|
|
20
|
+
)
|
|
17
21
|
|
|
18
22
|
sig do
|
|
19
23
|
params(package_manager: String).returns(T.proc.params(arg0: T::Array[T.untyped]).returns(T::Boolean))
|
|
@@ -61,6 +65,25 @@ module Dependabot
|
|
|
61
65
|
@name_normalisers[package_manager] = name_builder
|
|
62
66
|
end
|
|
63
67
|
|
|
68
|
+
sig do
|
|
69
|
+
params(
|
|
70
|
+
package_manager: String
|
|
71
|
+
).returns(T.nilable(T.proc.params(arg0: Dependency).returns(T.nilable(String))))
|
|
72
|
+
end
|
|
73
|
+
def self.humanized_previous_version_builder_for_package_manager(package_manager)
|
|
74
|
+
@humanized_previous_version_builders[package_manager]
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
sig do
|
|
78
|
+
params(
|
|
79
|
+
package_manager: String,
|
|
80
|
+
builder: T.proc.params(arg0: Dependency).returns(T.nilable(String))
|
|
81
|
+
).void
|
|
82
|
+
end
|
|
83
|
+
def self.register_humanized_previous_version_builder(package_manager, builder)
|
|
84
|
+
@humanized_previous_version_builders[package_manager] = builder
|
|
85
|
+
end
|
|
86
|
+
|
|
64
87
|
sig { returns(String) }
|
|
65
88
|
attr_reader :name
|
|
66
89
|
|
|
@@ -225,24 +248,10 @@ module Dependabot
|
|
|
225
248
|
|
|
226
249
|
sig { returns(T.nilable(String)) }
|
|
227
250
|
def humanized_previous_version
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
# previous ref was essentially the version).
|
|
231
|
-
if previous_version.nil?
|
|
232
|
-
return ref_changed? ? previous_ref : nil
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
if T.must(previous_version).match?(/^[0-9a-f]{40}/)
|
|
236
|
-
return previous_ref if ref_changed? && previous_ref
|
|
251
|
+
custom_version = custom_humanized_previous_version
|
|
252
|
+
return custom_version if custom_version
|
|
237
253
|
|
|
238
|
-
|
|
239
|
-
elsif version == previous_version &&
|
|
240
|
-
package_manager == "docker"
|
|
241
|
-
digest = docker_digest_from_reqs(T.must(previous_requirements))
|
|
242
|
-
"`#{T.must(T.must(digest).split(':').last)[0..6]}`"
|
|
243
|
-
else
|
|
244
|
-
previous_version
|
|
245
|
-
end
|
|
254
|
+
default_humanized_previous_version
|
|
246
255
|
end
|
|
247
256
|
|
|
248
257
|
sig { returns(T.nilable(String)) }
|
|
@@ -391,6 +400,40 @@ module Dependabot
|
|
|
391
400
|
|
|
392
401
|
private
|
|
393
402
|
|
|
403
|
+
sig { returns(T.nilable(String)) }
|
|
404
|
+
def custom_humanized_previous_version
|
|
405
|
+
builder = self.class.humanized_previous_version_builder_for_package_manager(package_manager)
|
|
406
|
+
return nil unless builder
|
|
407
|
+
|
|
408
|
+
builder.call(self)
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
sig { returns(T.nilable(String)) }
|
|
412
|
+
def default_humanized_previous_version
|
|
413
|
+
# If we don't have a previous version, we *may* still be able to figure
|
|
414
|
+
# one out if a ref was provided and has been changed (in which case the
|
|
415
|
+
# previous ref was essentially the version).
|
|
416
|
+
return (ref_changed? ? previous_ref : nil) if previous_version.nil?
|
|
417
|
+
|
|
418
|
+
return humanized_sha_previous_version if T.must(previous_version).match?(/^[0-9a-f]{40}/)
|
|
419
|
+
return humanized_docker_previous_version if version == previous_version && package_manager == "docker"
|
|
420
|
+
|
|
421
|
+
previous_version
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
sig { returns(T.nilable(String)) }
|
|
425
|
+
def humanized_sha_previous_version
|
|
426
|
+
return previous_ref if ref_changed? && previous_ref
|
|
427
|
+
|
|
428
|
+
"`#{T.must(previous_version)[0..6]}`"
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
sig { returns(String) }
|
|
432
|
+
def humanized_docker_previous_version
|
|
433
|
+
digest = docker_digest_from_reqs(T.must(previous_requirements))
|
|
434
|
+
"`#{T.must(T.must(digest).split(':').last)[0..6]}`"
|
|
435
|
+
end
|
|
436
|
+
|
|
394
437
|
sig { void }
|
|
395
438
|
def check_values
|
|
396
439
|
check_requirement_fields
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "sorbet-runtime"
|
|
5
|
+
require "dependabot/dependency"
|
|
6
|
+
require "dependabot/logger"
|
|
7
|
+
require "dependabot/pull_request_creator/pr_name_prefixer"
|
|
8
|
+
|
|
9
|
+
module Dependabot
|
|
10
|
+
class PullRequestCreator
|
|
11
|
+
class MessageBuilder
|
|
12
|
+
# Composes a final PR title from a base title + prefix.
|
|
13
|
+
#
|
|
14
|
+
# Works in two modes:
|
|
15
|
+
# 1. With a full PrNamePrefixer (updater path — has source/credentials for
|
|
16
|
+
# commit style auto-detection)
|
|
17
|
+
# 2. With just commit_message_options (API path — explicit prefix only,
|
|
18
|
+
# no network calls needed)
|
|
19
|
+
class TitleBuilder
|
|
20
|
+
extend T::Sig
|
|
21
|
+
|
|
22
|
+
sig { returns(String) }
|
|
23
|
+
attr_reader :base_title
|
|
24
|
+
|
|
25
|
+
sig { returns(T.nilable(Dependabot::PullRequestCreator::PrNamePrefixer)) }
|
|
26
|
+
attr_reader :prefixer
|
|
27
|
+
|
|
28
|
+
sig { returns(T.nilable(T::Hash[Symbol, T.untyped])) }
|
|
29
|
+
attr_reader :commit_message_options
|
|
30
|
+
|
|
31
|
+
sig { returns(T.nilable(T::Array[Dependabot::Dependency])) }
|
|
32
|
+
attr_reader :dependencies
|
|
33
|
+
|
|
34
|
+
sig do
|
|
35
|
+
params(
|
|
36
|
+
base_title: String,
|
|
37
|
+
prefixer: T.nilable(Dependabot::PullRequestCreator::PrNamePrefixer),
|
|
38
|
+
commit_message_options: T.nilable(T::Hash[Symbol, T.untyped]),
|
|
39
|
+
dependencies: T.nilable(T::Array[Dependabot::Dependency])
|
|
40
|
+
).void
|
|
41
|
+
end
|
|
42
|
+
def initialize(base_title:, prefixer: nil, commit_message_options: nil, dependencies: nil)
|
|
43
|
+
@base_title = base_title
|
|
44
|
+
@prefixer = prefixer
|
|
45
|
+
@commit_message_options = commit_message_options
|
|
46
|
+
@dependencies = dependencies
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Generates a base title for multi-ecosystem combined PR updates.
|
|
50
|
+
sig { params(group_name: String, update_count: Integer).returns(String) }
|
|
51
|
+
def self.multi_ecosystem_base_title(group_name:, update_count:)
|
|
52
|
+
"bump the \"#{group_name}\" group with " \
|
|
53
|
+
"#{update_count} update#{'s' unless update_count == 1} across multiple ecosystems"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
sig { returns(String) }
|
|
57
|
+
def build
|
|
58
|
+
name = base_title.dup
|
|
59
|
+
name[0] = T.must(name[0]).capitalize if !name.empty? && capitalize?
|
|
60
|
+
"#{prefix}#{name}"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
sig { returns(String) }
|
|
66
|
+
def prefix
|
|
67
|
+
return T.must(prefixer).pr_name_prefix if prefixer
|
|
68
|
+
|
|
69
|
+
build_explicit_prefix
|
|
70
|
+
rescue StandardError => e
|
|
71
|
+
Dependabot.logger.error("Error while generating PR name prefix: #{e.message}")
|
|
72
|
+
Dependabot.logger.error(e.backtrace&.join("\n"))
|
|
73
|
+
""
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
sig { returns(T::Boolean) }
|
|
77
|
+
def capitalize?
|
|
78
|
+
return T.must(prefixer).capitalize_first_word? if prefixer
|
|
79
|
+
|
|
80
|
+
true
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# Builds prefix from explicit commit_message_options only.
|
|
84
|
+
# Same logic as PrNamePrefixer#prefix_from_explicitly_provided_details
|
|
85
|
+
# but without requiring source/credentials.
|
|
86
|
+
sig { returns(String) }
|
|
87
|
+
def build_explicit_prefix
|
|
88
|
+
return "" unless commit_message_options&.key?(:prefix)
|
|
89
|
+
|
|
90
|
+
prefix = explicit_prefix_string
|
|
91
|
+
return "" if prefix.empty?
|
|
92
|
+
|
|
93
|
+
prefix += "(#{scope})" if commit_message_options&.dig(:include_scope)
|
|
94
|
+
# Append colon after alphanumeric or closing bracket to follow
|
|
95
|
+
# conventional commit format (e.g., "chore: ..." or "fix(deps): ...")
|
|
96
|
+
prefix += ":" if prefix.match?(/[A-Za-z0-9\)\]]\Z/)
|
|
97
|
+
prefix += " " unless prefix.end_with?(" ")
|
|
98
|
+
prefix
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
sig { returns(String) }
|
|
102
|
+
def explicit_prefix_string
|
|
103
|
+
if production_dependencies?
|
|
104
|
+
commit_message_options&.dig(:prefix).to_s
|
|
105
|
+
elsif commit_message_options&.key?(:prefix_development)
|
|
106
|
+
commit_message_options&.dig(:prefix_development).to_s
|
|
107
|
+
else
|
|
108
|
+
commit_message_options&.dig(:prefix).to_s
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
sig { returns(T::Boolean) }
|
|
113
|
+
def production_dependencies?
|
|
114
|
+
dependencies&.any?(&:production?) != false
|
|
115
|
+
rescue StandardError
|
|
116
|
+
true
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
sig { returns(String) }
|
|
120
|
+
def scope
|
|
121
|
+
production_dependencies? ? "deps" : "deps-dev"
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -24,6 +24,7 @@ module Dependabot
|
|
|
24
24
|
require_relative "message_builder/metadata_presenter"
|
|
25
25
|
require_relative "message_builder/issue_linker"
|
|
26
26
|
require_relative "message_builder/link_and_mention_sanitizer"
|
|
27
|
+
require_relative "message_builder/title_builder"
|
|
27
28
|
require_relative "pr_name_prefixer"
|
|
28
29
|
|
|
29
30
|
sig { returns(Dependabot::Source) }
|
|
@@ -130,8 +131,10 @@ module Dependabot
|
|
|
130
131
|
sig { returns(String) }
|
|
131
132
|
def pr_name
|
|
132
133
|
name = dependency_group ? group_pr_name : solo_pr_name
|
|
133
|
-
|
|
134
|
-
|
|
134
|
+
MessageBuilder::TitleBuilder.new(
|
|
135
|
+
base_title: name,
|
|
136
|
+
prefixer: pr_name_prefixer
|
|
137
|
+
).build
|
|
135
138
|
end
|
|
136
139
|
|
|
137
140
|
sig { returns(String) }
|
data/lib/dependabot.rb
CHANGED
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.
|
|
4
|
+
version: 0.365.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -586,6 +586,7 @@ files:
|
|
|
586
586
|
- lib/dependabot/pull_request_creator/message_builder/issue_linker.rb
|
|
587
587
|
- lib/dependabot/pull_request_creator/message_builder/link_and_mention_sanitizer.rb
|
|
588
588
|
- lib/dependabot/pull_request_creator/message_builder/metadata_presenter.rb
|
|
589
|
+
- lib/dependabot/pull_request_creator/message_builder/title_builder.rb
|
|
589
590
|
- lib/dependabot/pull_request_creator/pr_name_prefixer.rb
|
|
590
591
|
- lib/dependabot/pull_request_updater.rb
|
|
591
592
|
- lib/dependabot/pull_request_updater/azure.rb
|
|
@@ -615,7 +616,7 @@ licenses:
|
|
|
615
616
|
- MIT
|
|
616
617
|
metadata:
|
|
617
618
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
618
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
619
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.365.0
|
|
619
620
|
rdoc_options: []
|
|
620
621
|
require_paths:
|
|
621
622
|
- lib
|