Skip to content

Commit 0f198ea

Browse files
authored
fix sorbet typings (#12011)
1 parent 048feb4 commit 0f198ea

File tree

2 files changed

+128
-27
lines changed

2 files changed

+128
-27
lines changed

maven/lib/dependabot/maven/update_checker.rb

+55-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# typed: true
1+
# typed: strict
22
# frozen_string_literal: true
33

44
require "dependabot/update_checkers"
@@ -12,10 +12,42 @@ class UpdateChecker < Dependabot::UpdateCheckers::Base
1212
require_relative "update_checker/version_finder"
1313
require_relative "update_checker/property_updater"
1414

15+
sig do
16+
params(
17+
dependency: Dependabot::Dependency,
18+
dependency_files: T::Array[Dependabot::DependencyFile],
19+
credentials: T::Array[Dependabot::Credential],
20+
repo_contents_path: T.nilable(String),
21+
ignored_versions: T::Array[String],
22+
raise_on_ignored: T::Boolean,
23+
security_advisories: T::Array[Dependabot::SecurityAdvisory],
24+
requirements_update_strategy: T.nilable(Dependabot::RequirementsUpdateStrategy),
25+
dependency_group: T.nilable(Dependabot::DependencyGroup),
26+
update_cooldown: T.nilable(Dependabot::Package::ReleaseCooldownOptions),
27+
options: T::Hash[Symbol, T.untyped]
28+
)
29+
.void
30+
end
31+
def initialize(dependency:, dependency_files:, credentials:,
32+
repo_contents_path: nil, ignored_versions: [],
33+
raise_on_ignored: false, security_advisories: [],
34+
requirements_update_strategy: nil, dependency_group: nil,
35+
update_cooldown: nil, options: {})
36+
super
37+
38+
@version_finder = T.let(nil, T.nilable(VersionFinder))
39+
@property_updater = T.let(nil, T.nilable(PropertyUpdater))
40+
@property_value_finder = T.let(nil, T.nilable(Maven::FileParser::PropertyValueFinder))
41+
@declarations_using_a_property = T.let(nil, T.nilable(T::Array[T::Hash[Symbol, T.untyped]]))
42+
@all_property_based_dependencies = T.let(nil, T.nilable(T::Array[Dependabot::Dependency]))
43+
end
44+
45+
sig { override.returns(T.nilable(Dependabot::Version)) }
1546
def latest_version
1647
latest_version_details&.fetch(:version)
1748
end
1849

50+
sig { override.returns(T.nilable(Dependabot::Version)) }
1951
def latest_resolvable_version
2052
# Maven's version resolution algorithm is very simple: it just uses
2153
# the version defined "closest", with the first declaration winning
@@ -27,14 +59,17 @@ def latest_resolvable_version
2759
latest_version
2860
end
2961

62+
sig { override.returns(T.nilable(Dependabot::Version)) }
3063
def lowest_security_fix_version
3164
lowest_security_fix_version_details&.fetch(:version)
3265
end
3366

67+
sig { override.returns(T.nilable(Dependabot::Version)) }
3468
def lowest_resolvable_security_fix_version
3569
lowest_security_fix_version
3670
end
3771

72+
sig { override.returns(T.nilable(Dependabot::Version)) }
3873
def latest_resolvable_version_with_no_unlock
3974
# Irrelevant, since Maven has a single dependency file (the pom.xml).
4075
#
@@ -46,6 +81,7 @@ def latest_resolvable_version_with_no_unlock
4681
nil
4782
end
4883

84+
sig { override.returns(T::Array[T::Hash[Symbol, T.untyped]]) }
4985
def updated_requirements
5086
property_names =
5187
declarations_using_a_property
@@ -59,11 +95,14 @@ def updated_requirements
5995
).updated_requirements
6096
end
6197

98+
sig { override.returns(T::Boolean) }
6299
def requirements_unlocked_or_can_be?
63100
declarations_using_a_property.none? do |requirement|
64101
prop_name = requirement.dig(:metadata, :property_name)
65102
pom = dependency_files.find { |f| f.name == requirement[:file] }
66103

104+
return false unless prop_name && pom
105+
67106
declaration_pom_name =
68107
property_value_finder
69108
.property_details(property_name: prop_name, callsite_pom: pom)
@@ -75,43 +114,50 @@ def requirements_unlocked_or_can_be?
75114

76115
private
77116

117+
sig { override.returns(T::Boolean) }
78118
def latest_version_resolvable_with_full_unlock?
79119
return false unless version_comes_from_multi_dependency_property?
80120

81121
property_updater.update_possible?
82122
end
83123

124+
sig { override.returns(T::Array[Dependabot::Dependency]) }
84125
def updated_dependencies_after_full_unlock
85126
property_updater.updated_dependencies
86127
end
87128

129+
sig { override.returns(T::Boolean) }
88130
def numeric_version_up_to_date?
89131
return false unless version_class.correct?(dependency.version)
90132

91133
super
92134
end
93135

136+
sig { override.params(requirements_to_unlock: T.nilable(Symbol)).returns(T::Boolean) }
94137
def numeric_version_can_update?(requirements_to_unlock:)
95138
return false unless version_class.correct?(dependency.version)
96139

97140
super
98141
end
99142

143+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
100144
def preferred_version_details
101145
return lowest_security_fix_version_details if vulnerable?
102146

103147
latest_version_details
104148
end
105149

150+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
106151
def latest_version_details
107-
@latest_version_details ||= version_finder.latest_version_details
152+
version_finder.latest_version_details
108153
end
109154

155+
sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
110156
def lowest_security_fix_version_details
111-
@lowest_security_fix_version_details ||=
112-
version_finder.lowest_security_fix_version_details
157+
version_finder.lowest_security_fix_version_details
113158
end
114159

160+
sig { returns(VersionFinder) }
115161
def version_finder
116162
@version_finder ||=
117163
VersionFinder.new(
@@ -124,6 +170,7 @@ def version_finder
124170
)
125171
end
126172

173+
sig { returns(PropertyUpdater) }
127174
def property_updater
128175
@property_updater ||=
129176
PropertyUpdater.new(
@@ -135,12 +182,14 @@ def property_updater
135182
)
136183
end
137184

185+
sig { returns(Maven::FileParser::PropertyValueFinder) }
138186
def property_value_finder
139187
@property_value_finder ||=
140188
Maven::FileParser::PropertyValueFinder
141189
.new(dependency_files: dependency_files, credentials: credentials.map(&:to_s))
142190
end
143191

192+
sig { returns(T::Boolean) }
144193
def version_comes_from_multi_dependency_property?
145194
declarations_using_a_property.any? do |requirement|
146195
property_name = requirement.fetch(:metadata).fetch(:property_name)
@@ -159,12 +208,14 @@ def version_comes_from_multi_dependency_property?
159208
end
160209
end
161210

211+
sig { returns(T::Array[T::Hash[Symbol, T.untyped]]) }
162212
def declarations_using_a_property
163213
@declarations_using_a_property ||=
164214
dependency.requirements
165215
.select { |req| req.dig(:metadata, :property_name) }
166216
end
167217

218+
sig { returns(T::Array[Dependabot::Dependency]) }
168219
def all_property_based_dependencies
169220
@all_property_based_dependencies ||=
170221
Maven::FileParser.new(

0 commit comments

Comments
 (0)