dependabot-maven 0.372.0 → 0.373.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/lib/dependabot/maven/requirement.rb +12 -96
- data/lib/dependabot/maven/shared/shared_requirement.rb +121 -0
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1d3f17160cdfe3e8bf0255e367e134fddf4b9683ad6250d913d214247d1283a2
|
|
4
|
+
data.tar.gz: f463dd53e46376f2fb8c8d46d7af7f99b63eb6c5634063c20157a3e0a0bc3844
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '0380e3fb5ab4a15710db2d8fbe943d4238515cdd8f61a04d566197614332d5d5fd3086605c8899ba6897558328d7b91a9df68159266fc17b79568b9336afa1e4'
|
|
7
|
+
data.tar.gz: ef9a00f454fcf6661d1d3e0e33e16d1d43b141801ef9af125798887cf93531ce4bf34b4632641c58bba6841e2b47111462ac3a840d1a04bb6b8017fbc3dbb841
|
|
@@ -6,19 +6,29 @@ require "sorbet-runtime"
|
|
|
6
6
|
require "dependabot/requirement"
|
|
7
7
|
require "dependabot/utils"
|
|
8
8
|
require "dependabot/maven/version"
|
|
9
|
+
require "dependabot/maven/shared/shared_requirement"
|
|
9
10
|
|
|
10
11
|
module Dependabot
|
|
11
12
|
module Maven
|
|
12
|
-
class Requirement < Dependabot::
|
|
13
|
+
class Requirement < Dependabot::Maven::Shared::SharedRequirement
|
|
13
14
|
extend T::Sig
|
|
14
15
|
|
|
15
16
|
quoted = OPS.keys.map { |k| Regexp.quote k }.join("|")
|
|
16
|
-
OR_SYNTAX = T.let(/(?<=\]|\)),/, Regexp)
|
|
17
17
|
PATTERN_RAW = T.let("\\s*(#{quoted})?\\s*(#{Maven::Version::VERSION_PATTERN})\\s*".freeze, String)
|
|
18
18
|
PATTERN = T.let(/\A#{PATTERN_RAW}\z/, Regexp)
|
|
19
19
|
# Like PATTERN, but the leading operator is required
|
|
20
20
|
RUBY_STYLE_PATTERN = T.let(/\A\s*(#{quoted})\s*(#{Maven::Version::VERSION_PATTERN})\s*\z/, Regexp)
|
|
21
21
|
|
|
22
|
+
sig { override.returns(Regexp) }
|
|
23
|
+
def self.pattern
|
|
24
|
+
PATTERN
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
sig { override.returns(Regexp) }
|
|
28
|
+
def self.ruby_style_pattern
|
|
29
|
+
RUBY_STYLE_PATTERN
|
|
30
|
+
end
|
|
31
|
+
|
|
22
32
|
sig { params(obj: T.any(String, Gem::Version)).returns(T::Array[T.any(String, T.untyped)]) }
|
|
23
33
|
def self.parse(obj)
|
|
24
34
|
return ["=", Maven::Version.new(obj.to_s)] if obj.is_a?(Gem::Version)
|
|
@@ -40,105 +50,11 @@ module Dependabot
|
|
|
40
50
|
end
|
|
41
51
|
end
|
|
42
52
|
|
|
43
|
-
sig { params(requirements: T.untyped).void }
|
|
44
|
-
def initialize(*requirements)
|
|
45
|
-
requirements = requirements.flatten.flat_map do |req_string|
|
|
46
|
-
convert_java_constraint_to_ruby_constraint(req_string)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
super(requirements)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
53
|
sig { params(version: T.untyped).returns(T::Boolean) }
|
|
53
54
|
def satisfied_by?(version)
|
|
54
55
|
version = Maven::Version.new(version.to_s)
|
|
55
56
|
super
|
|
56
57
|
end
|
|
57
|
-
|
|
58
|
-
private
|
|
59
|
-
|
|
60
|
-
sig { params(req_string: T.nilable(String)).returns(T::Array[String]) }
|
|
61
|
-
def self.split_java_requirement(req_string)
|
|
62
|
-
return [req_string || ""] unless req_string&.match?(OR_SYNTAX)
|
|
63
|
-
|
|
64
|
-
req_string.split(OR_SYNTAX).flat_map do |str|
|
|
65
|
-
next str if str.start_with?("(", "[")
|
|
66
|
-
|
|
67
|
-
exacts, *rest = str.split(/,(?=\[|\()/)
|
|
68
|
-
[*T.must(exacts).split(","), *rest]
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
private_class_method :split_java_requirement
|
|
72
|
-
|
|
73
|
-
sig do
|
|
74
|
-
params(
|
|
75
|
-
req_string: T.nilable(String)
|
|
76
|
-
)
|
|
77
|
-
.returns(T.nilable(T.any(T::Array[String], T::Array[T.nilable(String)])))
|
|
78
|
-
end
|
|
79
|
-
def convert_java_constraint_to_ruby_constraint(req_string)
|
|
80
|
-
return unless req_string
|
|
81
|
-
|
|
82
|
-
if self.class.send(:split_java_requirement, req_string).count > 1
|
|
83
|
-
raise "Can't convert multiple Java reqs to a single Ruby one"
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
version_reqs = req_string.split(",").map(&:strip)
|
|
87
|
-
if version_reqs.length > 1 && !version_reqs.all? { |s| PATTERN.match?(s) }
|
|
88
|
-
return convert_java_range_to_ruby_range(req_string)
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
version_reqs.map do |r|
|
|
92
|
-
# if an operator is already provided, use it
|
|
93
|
-
next r if r.match?(RUBY_STYLE_PATTERN)
|
|
94
|
-
|
|
95
|
-
convert_java_equals_req_to_ruby(r)
|
|
96
|
-
end
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
|
100
|
-
sig { params(req_string: String).returns(T::Array[T.nilable(String)]) }
|
|
101
|
-
def convert_java_range_to_ruby_range(req_string)
|
|
102
|
-
parts = req_string.split(",").map(&:strip)
|
|
103
|
-
lower_b = T.let(parts[0], T.nilable(String))
|
|
104
|
-
upper_b = T.let(parts[1], T.nilable(String))
|
|
105
|
-
|
|
106
|
-
lower_b =
|
|
107
|
-
if lower_b && ["(", "["].include?(lower_b) then nil
|
|
108
|
-
elsif lower_b&.start_with?("(") then "> #{lower_b.sub(/\(\s*/, '')}"
|
|
109
|
-
elsif lower_b
|
|
110
|
-
">= #{lower_b.sub(/\[\s*/, '').strip}"
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
upper_b =
|
|
114
|
-
if upper_b && [")", "]"].include?(upper_b) then nil
|
|
115
|
-
elsif upper_b&.end_with?(")") then "< #{upper_b.sub(/\s*\)/, '')}"
|
|
116
|
-
elsif upper_b
|
|
117
|
-
"<= #{upper_b.sub(/\s*\]/, '').strip}"
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
[lower_b, upper_b].compact
|
|
121
|
-
end
|
|
122
|
-
# rubocop:enable Metrics/PerceivedComplexity
|
|
123
|
-
|
|
124
|
-
sig { params(req_string: T.nilable(String)).returns(T.nilable(String)) }
|
|
125
|
-
def convert_java_equals_req_to_ruby(req_string)
|
|
126
|
-
return convert_wildcard_req(req_string) if req_string&.end_with?("+")
|
|
127
|
-
|
|
128
|
-
# If a soft requirement is being used, treat it as an equality matcher
|
|
129
|
-
return req_string unless req_string&.start_with?("[")
|
|
130
|
-
|
|
131
|
-
req_string.gsub(/[\[\]\(\)]/, "")
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
sig { params(req_string: T.nilable(String)).returns(String) }
|
|
135
|
-
def convert_wildcard_req(req_string)
|
|
136
|
-
version = req_string&.split("+")&.first
|
|
137
|
-
return ">= 0" if version.nil? || version.empty?
|
|
138
|
-
|
|
139
|
-
version += "0" if version.end_with?(".")
|
|
140
|
-
"~> #{version}"
|
|
141
|
-
end
|
|
142
58
|
end
|
|
143
59
|
end
|
|
144
60
|
end
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# typed: strict
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "sorbet-runtime"
|
|
5
|
+
|
|
6
|
+
require "dependabot/requirement"
|
|
7
|
+
|
|
8
|
+
module Dependabot
|
|
9
|
+
module Maven
|
|
10
|
+
module Shared
|
|
11
|
+
class SharedRequirement < Dependabot::Requirement
|
|
12
|
+
extend T::Sig
|
|
13
|
+
extend T::Helpers
|
|
14
|
+
|
|
15
|
+
abstract!
|
|
16
|
+
|
|
17
|
+
OR_SYNTAX = T.let(/(?<=\]|\)),/, Regexp)
|
|
18
|
+
|
|
19
|
+
sig { abstract.returns(Regexp) }
|
|
20
|
+
def self.pattern; end
|
|
21
|
+
|
|
22
|
+
sig { abstract.returns(Regexp) }
|
|
23
|
+
def self.ruby_style_pattern; end
|
|
24
|
+
|
|
25
|
+
sig { params(requirements: T.untyped).void }
|
|
26
|
+
def initialize(*requirements)
|
|
27
|
+
requirements = requirements.flatten.flat_map do |req_string|
|
|
28
|
+
convert_java_constraint_to_ruby_constraint(req_string)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
super(requirements)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
sig { params(req_string: T.nilable(String)).returns(T::Array[String]) }
|
|
37
|
+
def self.split_java_requirement(req_string)
|
|
38
|
+
return [req_string || ""] unless req_string&.match?(OR_SYNTAX)
|
|
39
|
+
|
|
40
|
+
req_string.split(OR_SYNTAX).flat_map do |str|
|
|
41
|
+
next str if str.start_with?("(", "[")
|
|
42
|
+
|
|
43
|
+
exacts, *rest = str.split(/,(?=\[|\()/)
|
|
44
|
+
[*T.must(exacts).split(","), *rest]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
private_class_method :split_java_requirement
|
|
48
|
+
|
|
49
|
+
sig do
|
|
50
|
+
params(
|
|
51
|
+
req_string: T.nilable(String)
|
|
52
|
+
)
|
|
53
|
+
.returns(T.nilable(T.any(T::Array[String], T::Array[T.nilable(String)])))
|
|
54
|
+
end
|
|
55
|
+
def convert_java_constraint_to_ruby_constraint(req_string)
|
|
56
|
+
return unless req_string
|
|
57
|
+
|
|
58
|
+
if self.class.send(:split_java_requirement, req_string).count > 1
|
|
59
|
+
raise "Can't convert multiple Java reqs to a single Ruby one"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
version_reqs = req_string.split(",").map(&:strip)
|
|
63
|
+
|
|
64
|
+
if version_reqs.length > 1 && !version_reqs.all? { |s| self.class.pattern.match?(s) }
|
|
65
|
+
return convert_java_range_to_ruby_range(req_string)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
version_reqs.map do |r|
|
|
69
|
+
# if an operator is already provided, use it
|
|
70
|
+
next r if r.match?(self.class.ruby_style_pattern)
|
|
71
|
+
|
|
72
|
+
convert_java_equals_req_to_ruby(r)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
sig { params(req_string: String).returns(T::Array[T.nilable(String)]) }
|
|
77
|
+
def convert_java_range_to_ruby_range(req_string)
|
|
78
|
+
parts = req_string.split(",").map(&:strip)
|
|
79
|
+
lower_b = parse_lower_bound(parts[0])
|
|
80
|
+
upper_b = parse_upper_bound(parts[1])
|
|
81
|
+
[lower_b, upper_b].compact
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
sig { params(bound: T.nilable(String)).returns(T.nilable(String)) }
|
|
85
|
+
def parse_lower_bound(bound)
|
|
86
|
+
return nil if bound.nil? || ["(", "["].include?(bound)
|
|
87
|
+
return "> #{bound.sub(/\(\s*/, '')}" if bound.start_with?("(")
|
|
88
|
+
|
|
89
|
+
">= #{bound.sub(/\[\s*/, '').strip}"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
sig { params(bound: T.nilable(String)).returns(T.nilable(String)) }
|
|
93
|
+
def parse_upper_bound(bound)
|
|
94
|
+
return nil if bound.nil? || [")", "]"].include?(bound)
|
|
95
|
+
return "< #{bound.sub(/\s*\)/, '')}" if bound.end_with?(")")
|
|
96
|
+
|
|
97
|
+
"<= #{bound.sub(/\s*\]/, '').strip}"
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
sig { params(req_string: T.nilable(String)).returns(T.nilable(String)) }
|
|
101
|
+
def convert_java_equals_req_to_ruby(req_string)
|
|
102
|
+
return convert_wildcard_req(req_string) if req_string&.end_with?("+")
|
|
103
|
+
|
|
104
|
+
# If a soft requirement is being used, treat it as an equality matcher
|
|
105
|
+
return req_string unless req_string&.start_with?("[")
|
|
106
|
+
|
|
107
|
+
req_string.gsub(/[\[\]\(\)]/, "")
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
sig { params(req_string: T.nilable(String)).returns(String) }
|
|
111
|
+
def convert_wildcard_req(req_string)
|
|
112
|
+
version = req_string&.split("+")&.first
|
|
113
|
+
return ">= 0" if version.nil? || version.empty?
|
|
114
|
+
|
|
115
|
+
version += "0" if version.end_with?(".")
|
|
116
|
+
"~> #{version}"
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-maven
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.373.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -15,14 +15,14 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - '='
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 0.
|
|
18
|
+
version: 0.373.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - '='
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 0.
|
|
25
|
+
version: 0.373.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: rexml
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -274,6 +274,7 @@ files:
|
|
|
274
274
|
- lib/dependabot/maven/requirement.rb
|
|
275
275
|
- lib/dependabot/maven/shared/shared_metadata_finder.rb
|
|
276
276
|
- lib/dependabot/maven/shared/shared_package_details_fetcher.rb
|
|
277
|
+
- lib/dependabot/maven/shared/shared_requirement.rb
|
|
277
278
|
- lib/dependabot/maven/shared/shared_version_finder.rb
|
|
278
279
|
- lib/dependabot/maven/token_bucket.rb
|
|
279
280
|
- lib/dependabot/maven/update_checker.rb
|
|
@@ -288,7 +289,7 @@ licenses:
|
|
|
288
289
|
- MIT
|
|
289
290
|
metadata:
|
|
290
291
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
291
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
292
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.373.0
|
|
292
293
|
rdoc_options: []
|
|
293
294
|
require_paths:
|
|
294
295
|
- lib
|