dependabot-core 0.84.1 → 0.85.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/dependabot/file_fetchers.rb +0 -2
- data/lib/dependabot/file_parsers.rb +0 -2
- data/lib/dependabot/file_updaters.rb +0 -2
- data/lib/dependabot/file_updaters/ruby/.DS_Store +0 -0
- data/lib/dependabot/metadata_finders.rb +0 -2
- data/lib/dependabot/update_checkers.rb +0 -2
- data/lib/dependabot/utils.rb +0 -4
- data/lib/dependabot/version.rb +1 -1
- metadata +3 -16
- data/lib/dependabot/file_fetchers/java/maven.rb +0 -127
- data/lib/dependabot/file_parsers/java/maven.rb +0 -252
- data/lib/dependabot/file_parsers/java/maven/property_value_finder.rb +0 -166
- data/lib/dependabot/file_parsers/java/maven/repositories_finder.rb +0 -188
- data/lib/dependabot/file_updaters/java/maven.rb +0 -155
- data/lib/dependabot/file_updaters/java/maven/declaration_finder.rb +0 -148
- data/lib/dependabot/file_updaters/java/maven/property_value_updater.rb +0 -61
- data/lib/dependabot/metadata_finders/java/maven.rb +0 -173
- data/lib/dependabot/update_checkers/java/maven.rb +0 -159
- data/lib/dependabot/update_checkers/java/maven/property_updater.rb +0 -127
- data/lib/dependabot/update_checkers/java/maven/requirements_updater.rb +0 -92
- data/lib/dependabot/update_checkers/java/maven/version_finder.rb +0 -225
- data/lib/dependabot/utils/java/requirement.rb +0 -110
- data/lib/dependabot/utils/java/version.rb +0 -179
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# Java versions use dots and dashes when tokenising their versions.
|
|
4
|
-
# Gem::Version converts a "-" to ".pre.", so we override the `to_s` method.
|
|
5
|
-
#
|
|
6
|
-
# See https://maven.apache.org/pom.html#Version_Order_Specification for details.
|
|
7
|
-
|
|
8
|
-
module Dependabot
|
|
9
|
-
module Utils
|
|
10
|
-
module Java
|
|
11
|
-
class Version < Gem::Version
|
|
12
|
-
NULL_VALUES = %w(0 final ga).freeze
|
|
13
|
-
PREFIXED_TOKEN_HIERARCHY = {
|
|
14
|
-
"." => { qualifier: 1, number: 4 },
|
|
15
|
-
"-" => { qualifier: 2, number: 3 }
|
|
16
|
-
}.freeze
|
|
17
|
-
NAMED_QUALIFIERS_HIERARCHY = {
|
|
18
|
-
"a" => 1, "alpha" => 1,
|
|
19
|
-
"b" => 2, "beta" => 2,
|
|
20
|
-
"m" => 3, "milestone" => 3,
|
|
21
|
-
"rc" => 4, "cr" => 4,
|
|
22
|
-
"snapshot" => 5,
|
|
23
|
-
"ga" => 6, "" => 6, "final" => 6,
|
|
24
|
-
"sp" => 7
|
|
25
|
-
}.freeze
|
|
26
|
-
VERSION_PATTERN =
|
|
27
|
-
'[0-9a-zA-Z]+(?>\.[0-9a-zA-Z]*)*(-[0-9A-Za-z-]*(\.[0-9A-Za-z-]*)*)?'
|
|
28
|
-
ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/.freeze
|
|
29
|
-
|
|
30
|
-
def self.correct?(version)
|
|
31
|
-
return false if version.nil?
|
|
32
|
-
|
|
33
|
-
version.to_s.match?(ANCHORED_VERSION_PATTERN)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def initialize(version)
|
|
37
|
-
@version_string = version.to_s
|
|
38
|
-
super(version.to_s.tr("_", "-"))
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def to_s
|
|
42
|
-
@version_string
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def prerelease?
|
|
46
|
-
tokens.any? do |token|
|
|
47
|
-
next false unless NAMED_QUALIFIERS_HIERARCHY[token]
|
|
48
|
-
|
|
49
|
-
NAMED_QUALIFIERS_HIERARCHY[token] < 6
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
def tokens
|
|
56
|
-
@tokens ||=
|
|
57
|
-
begin
|
|
58
|
-
version = @version_string.to_s.downcase
|
|
59
|
-
version = fill_tokens(version)
|
|
60
|
-
version = trim_version(version)
|
|
61
|
-
split_into_prefixed_tokens(version).map { |t| t[1..-1] }
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def <=>(other)
|
|
66
|
-
version = stringify_version(@version_string)
|
|
67
|
-
version = fill_tokens(version)
|
|
68
|
-
version = trim_version(version)
|
|
69
|
-
|
|
70
|
-
other_version = stringify_version(other)
|
|
71
|
-
other_version = fill_tokens(other_version)
|
|
72
|
-
other_version = trim_version(other_version)
|
|
73
|
-
|
|
74
|
-
version, other_version = convert_dates(version, other_version)
|
|
75
|
-
|
|
76
|
-
prefixed_tokens = split_into_prefixed_tokens(version)
|
|
77
|
-
other_prefixed_tokens = split_into_prefixed_tokens(other_version)
|
|
78
|
-
|
|
79
|
-
prefixed_tokens, other_prefixed_tokens =
|
|
80
|
-
pad_for_comparison(prefixed_tokens, other_prefixed_tokens)
|
|
81
|
-
|
|
82
|
-
prefixed_tokens.count.times.each do |index|
|
|
83
|
-
comp = compare_prefixed_token(
|
|
84
|
-
prefix: prefixed_tokens[index][0],
|
|
85
|
-
token: prefixed_tokens[index][1..-1] || "",
|
|
86
|
-
other_prefix: other_prefixed_tokens[index][0],
|
|
87
|
-
other_token: other_prefixed_tokens[index][1..-1] || ""
|
|
88
|
-
)
|
|
89
|
-
return comp unless comp.zero?
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
0
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
def stringify_version(version)
|
|
96
|
-
version = version.to_s.downcase
|
|
97
|
-
|
|
98
|
-
# Not technically correct, but pragmatic
|
|
99
|
-
version.gsub(/^v(?=\d)/, "")
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def fill_tokens(version)
|
|
103
|
-
# Add separators when transitioning from digits to characters
|
|
104
|
-
version = version.gsub(/(\d)([A-Za-z])/, '\1-\2')
|
|
105
|
-
version = version.gsub(/([A-Za-z])(\d)/, '\1-\2')
|
|
106
|
-
|
|
107
|
-
# Replace empty tokens with 0
|
|
108
|
-
version = version.gsub(/([\.\-])([\.\-])/, '\10\2')
|
|
109
|
-
version = version.gsub(/^([\.\-])/, '0\1')
|
|
110
|
-
version.gsub(/([\.\-])$/, '\10')
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
def trim_version(version)
|
|
114
|
-
version.split("-").map do |v|
|
|
115
|
-
parts = v.split(".")
|
|
116
|
-
parts = parts[0..-2] while NULL_VALUES.include?(parts&.last)
|
|
117
|
-
parts&.join(".")
|
|
118
|
-
end.compact.reject(&:empty?).join("-")
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def convert_dates(version, other_version)
|
|
122
|
-
default = [version, other_version]
|
|
123
|
-
return default unless version.match?(/^\d{4}-?\d{2}-?\d{2}$/)
|
|
124
|
-
return default unless other_version.match?(/^\d{4}-?\d{2}-?\d{2}$/)
|
|
125
|
-
|
|
126
|
-
[version.delete("-"), other_version.delete("-")]
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def split_into_prefixed_tokens(version)
|
|
130
|
-
".#{version}".split(/(?=[\-\.])/)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
def pad_for_comparison(prefixed_tokens, other_prefixed_tokens)
|
|
134
|
-
prefixed_tokens = prefixed_tokens.dup
|
|
135
|
-
other_prefixed_tokens = other_prefixed_tokens.dup
|
|
136
|
-
|
|
137
|
-
longest = [prefixed_tokens, other_prefixed_tokens].max_by(&:count)
|
|
138
|
-
shortest = [prefixed_tokens, other_prefixed_tokens].min_by(&:count)
|
|
139
|
-
|
|
140
|
-
longest.count.times do |index|
|
|
141
|
-
next unless shortest[index].nil?
|
|
142
|
-
|
|
143
|
-
shortest[index] = longest[index].start_with?(".") ? ".0" : "-"
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
[prefixed_tokens, other_prefixed_tokens]
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def compare_prefixed_token(prefix:, token:, other_prefix:, other_token:)
|
|
150
|
-
token_type = token.match?(/^\d+$/) ? :number : :qualifier
|
|
151
|
-
other_token_type = other_token.match?(/^\d+$/) ? :number : :qualifier
|
|
152
|
-
|
|
153
|
-
hierarchy = PREFIXED_TOKEN_HIERARCHY.fetch(prefix).fetch(token_type)
|
|
154
|
-
other_hierarchy =
|
|
155
|
-
PREFIXED_TOKEN_HIERARCHY.fetch(other_prefix).fetch(other_token_type)
|
|
156
|
-
|
|
157
|
-
hierarchy_comparison = hierarchy <=> other_hierarchy
|
|
158
|
-
return hierarchy_comparison unless hierarchy_comparison.zero?
|
|
159
|
-
|
|
160
|
-
compare_token(token: token, other_token: other_token)
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
def compare_token(token:, other_token:)
|
|
164
|
-
if (token_hierarchy = NAMED_QUALIFIERS_HIERARCHY[token])
|
|
165
|
-
return -1 unless NAMED_QUALIFIERS_HIERARCHY[other_token]
|
|
166
|
-
|
|
167
|
-
return token_hierarchy <=> NAMED_QUALIFIERS_HIERARCHY[other_token]
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
return 1 if NAMED_QUALIFIERS_HIERARCHY[other_token]
|
|
171
|
-
|
|
172
|
-
token = token.to_i if token.match?(/^\d+$/)
|
|
173
|
-
other_token = other_token.to_i if other_token.match?(/^\d+$/)
|
|
174
|
-
token <=> other_token
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
end
|