dependabot-gradle 0.212.0 → 0.213.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3351fb1ee4f8162624eb226e7fc4240eda753152e52fdf1b2b4dcf379320751
4
- data.tar.gz: ee8233190463bb93f1277a4ddceb1b96fc783a0730aa75c1e9e226206c6acb1a
3
+ metadata.gz: 0fca8a86a99ff839c2a950ce045feffc4deb167ea7d45afb649d9c29c381b349
4
+ data.tar.gz: 99d3c12427a0dc2a89956f5dc27499e6176dc76c9b734b47a6e9fc7799616b2a
5
5
  SHA512:
6
- metadata.gz: 03bffc9b99077c543fefbe7c990014314ac795cf1b7632e9b74d7dfbedb36f75f338c14133204c57b28836a285f2c0f9778b039e0dadf874f00856bba16c30e3
7
- data.tar.gz: a78e909c826da1b08b4fba82131376d17297de546675e7008f462c683f4d2dc1a0354a796e0d4df09c9c090c88328d202a674bbae42b9e1489f5c7e4841fbe04
6
+ metadata.gz: 7aa6c8213da114c8ae5bfe35918f4cb045f18d0b5981617b38cf660bbc544b1767958dceb737c6fe51926327a474a6605092cb02f0ac32e41877d28947dac22d
7
+ data.tar.gz: e97bed5144eee699defa0a2c35138529a6cd829c837ea479ac69355a87a7d2602f9e0367799dcd54bf565a1099df6d922865e2e0149268fce9fa720a7743528d
@@ -10,6 +10,15 @@ module Dependabot
10
10
  @settings_file = settings_file
11
11
  end
12
12
 
13
+ def included_build_paths
14
+ paths = []
15
+ comment_free_content.scan(function_regex("includeBuild")) do
16
+ arg = Regexp.last_match.named_captures.fetch("args")
17
+ paths << arg.gsub(/["']/, "").strip
18
+ end
19
+ paths.uniq
20
+ end
21
+
13
22
  def subproject_paths
14
23
  subprojects = []
15
24
 
@@ -27,55 +27,72 @@ module Dependabot
27
27
  private
28
28
 
29
29
  def fetch_files
30
- fetched_files = []
31
- fetched_files << buildfile if buildfile
32
- fetched_files << settings_file if settings_file
33
- fetched_files += subproject_buildfiles
34
- fetched_files += dependency_script_plugins
35
- check_required_files_present
36
- fetched_files
30
+ files = all_buildfiles_in_build(".")
31
+ check_required_files_present(files)
32
+ files
37
33
  end
38
34
 
39
- def buildfile
40
- @buildfile ||= begin
41
- file = supported_build_file
42
- @buildfile_name ||= file.name if file
43
- file
44
- end
35
+ def all_buildfiles_in_build(root_dir)
36
+ files = [buildfile(root_dir), settings_file(root_dir)].compact
37
+ files += subproject_buildfiles(root_dir)
38
+ files += dependency_script_plugins(root_dir)
39
+ files + included_builds(root_dir).
40
+ flat_map { |dir| all_buildfiles_in_build(dir) }
41
+ end
42
+
43
+ def included_builds(root_dir)
44
+ builds = []
45
+
46
+ # buildSrc is implicit: included but not declared in settings.gradle
47
+ buildsrc = repo_contents(dir: root_dir, raise_errors: false).
48
+ find { |item| item.type == "dir" && item.name == "buildSrc" }
49
+ builds << clean_join(root_dir, "buildSrc") if buildsrc
50
+
51
+ return builds unless settings_file(root_dir)
52
+
53
+ builds += SettingsFileParser.
54
+ new(settings_file: settings_file(root_dir)).
55
+ included_build_paths.
56
+ map { |p| clean_join(root_dir, p) }
57
+
58
+ builds.uniq
59
+ end
60
+
61
+ def clean_join(*parts)
62
+ Pathname.new(File.join(*parts)).cleanpath.to_path
45
63
  end
46
64
 
47
- def subproject_buildfiles
48
- return [] unless settings_file
49
-
50
- @subproject_buildfiles ||= begin
51
- subproject_paths =
52
- SettingsFileParser.
53
- new(settings_file: settings_file).
54
- subproject_paths
55
-
56
- subproject_paths.filter_map do |path|
57
- if @buildfile_name
58
- fetch_file_from_host(File.join(path, @buildfile_name))
59
- else
60
- supported_file(SUPPORTED_BUILD_FILE_NAMES.map { |f| File.join(path, f) })
61
- end
62
- rescue Dependabot::DependencyFileNotFound
63
- # Gradle itself doesn't worry about missing subprojects, so we don't
64
- nil
65
+ def subproject_buildfiles(root_dir)
66
+ return [] unless settings_file(root_dir)
67
+
68
+ subproject_paths =
69
+ SettingsFileParser.
70
+ new(settings_file: settings_file(root_dir)).
71
+ subproject_paths
72
+
73
+ subproject_paths.filter_map do |path|
74
+ if @buildfile_name
75
+ fetch_file_from_host(File.join(root_dir, path, @buildfile_name))
76
+ else
77
+ buildfile(File.join(root_dir, path))
65
78
  end
79
+ rescue Dependabot::DependencyFileNotFound
80
+ # Gradle itself doesn't worry about missing subprojects, so we don't
81
+ nil
66
82
  end
67
83
  end
68
84
 
69
85
  # rubocop:disable Metrics/PerceivedComplexity
70
- def dependency_script_plugins
71
- return [] unless buildfile
86
+ def dependency_script_plugins(root_dir)
87
+ return [] unless buildfile(root_dir)
72
88
 
73
89
  dependency_plugin_paths =
74
- FileParser.find_include_names(buildfile).
90
+ FileParser.find_include_names(buildfile(root_dir)).
75
91
  reject { |path| path.include?("://") }.
76
92
  reject { |path| !path.include?("/") && path.split(".").count > 2 }.
77
93
  select { |filename| filename.include?("dependencies") }.
78
94
  map { |path| path.gsub("$rootDir", ".") }.
95
+ map { |path| File.join(root_dir, path) }.
79
96
  uniq
80
97
 
81
98
  dependency_plugin_paths.filter_map do |path|
@@ -89,10 +106,10 @@ module Dependabot
89
106
  end
90
107
  # rubocop:enable Metrics/PerceivedComplexity
91
108
 
92
- def check_required_files_present
93
- return if buildfile || (subproject_buildfiles && !subproject_buildfiles.empty?)
109
+ def check_required_files_present(files)
110
+ return if files.any?
94
111
 
95
- path = Pathname.new(File.join(directory, "build.gradle")).cleanpath.to_path
112
+ path = clean_join(directory, "build.gradle")
96
113
  path += "(.kts)?"
97
114
  raise Dependabot::DependencyFileNotFound, path
98
115
  end
@@ -104,24 +121,35 @@ module Dependabot
104
121
  false
105
122
  end
106
123
 
107
- def settings_file
108
- @settings_file ||= supported_settings_file
124
+ def buildfile(dir)
125
+ file = find_first(dir, SUPPORTED_BUILD_FILE_NAMES) || return
126
+ @buildfile_name ||= File.basename(file.name)
127
+ file
109
128
  end
110
129
 
111
- def supported_build_file
112
- supported_file(SUPPORTED_BUILD_FILE_NAMES)
130
+ def settings_file(dir)
131
+ find_first(dir, SUPPORTED_SETTINGS_FILE_NAMES)
113
132
  end
114
133
 
115
- def supported_settings_file
116
- supported_file(SUPPORTED_SETTINGS_FILE_NAMES)
134
+ def find_first(dir, supported_names)
135
+ paths = supported_names.
136
+ map { |name| clean_join(dir, name) }.
137
+ each do |path|
138
+ return cached_files[path] || next
139
+ end
140
+ fetch_first_if_present(paths)
117
141
  end
118
142
 
119
- def supported_file(supported_file_names)
120
- supported_file_names.each do |supported_file_name|
121
- file = fetch_file_if_present(supported_file_name)
122
- return file if file
123
- end
143
+ def cached_files
144
+ @cached_files ||= {}
145
+ end
124
146
 
147
+ def fetch_first_if_present(paths)
148
+ paths.each do |path|
149
+ file = fetch_file_if_present(path) || next
150
+ cached_files[path] = file
151
+ return file
152
+ end
125
153
  nil
126
154
  end
127
155
  end
@@ -9,71 +9,58 @@ module Dependabot
9
9
  # rubocop:disable Layout/LineLength
10
10
  SUPPORTED_BUILD_FILE_NAMES = %w(build.gradle build.gradle.kts).freeze
11
11
 
12
- QUOTED_VALUE_REGEX =
13
- /\s*['"][^\s]+['"]\s*/.freeze
12
+ QUOTED_VALUE_REGEX = /\s*['"][^\s]+['"]\s*/
14
13
 
15
14
  # project.findProperty('property') ?:
16
- FIND_PROPERTY_REGEX =
17
- /\s*project\.findProperty\(#{QUOTED_VALUE_REGEX}\)\s*\?:/.freeze
15
+ FIND_PROPERTY_REGEX = /\s*project\.findProperty\(#{QUOTED_VALUE_REGEX}\)\s*\?:/
18
16
 
19
17
  # project.hasProperty('property') ? project.getProperty('property') :
20
18
  GROOVY_HAS_PROPERTY_REGEX =
21
- /\s*project\.hasProperty\(#{QUOTED_VALUE_REGEX}\)\s*\?\s*project\.getProperty\(#{QUOTED_VALUE_REGEX}\)\s*:/.freeze
19
+ /\s*project\.hasProperty\(#{QUOTED_VALUE_REGEX}\)\s*\?\s*project\.getProperty\(#{QUOTED_VALUE_REGEX}\)\s*:/
22
20
 
23
21
  # if(project.hasProperty("property")) project.getProperty("property") else
24
22
  KOTLIN_HAS_PROPERTY_REGEX =
25
- /\s*if\s*\(project\.hasProperty\(#{QUOTED_VALUE_REGEX}\)\)\s+project\.getProperty\(#{QUOTED_VALUE_REGEX}\)\s+else\s+/.freeze
23
+ /\s*if\s*\(project\.hasProperty\(#{QUOTED_VALUE_REGEX}\)\)\s+project\.getProperty\(#{QUOTED_VALUE_REGEX}\)\s+else\s+/
26
24
 
27
- GROOVY_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX =
28
- /(?:#{FIND_PROPERTY_REGEX}|#{GROOVY_HAS_PROPERTY_REGEX})?/.freeze
25
+ GROOVY_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX = /(?:#{FIND_PROPERTY_REGEX}|#{GROOVY_HAS_PROPERTY_REGEX})?/
29
26
 
30
- KOTLIN_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX =
31
- /(?:#{FIND_PROPERTY_REGEX}|#{KOTLIN_HAS_PROPERTY_REGEX})?/.freeze
27
+ KOTLIN_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX = /(?:#{FIND_PROPERTY_REGEX}|#{KOTLIN_HAS_PROPERTY_REGEX})?/
32
28
 
33
29
  PROPERTY_DECLARATION_AS_DEFAULTS_REGEX =
34
- /(#{GROOVY_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX}|#{KOTLIN_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX})?/.freeze
30
+ /(#{GROOVY_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX}|#{KOTLIN_PROPERTY_DECLARATION_AS_DEFAULTS_REGEX})?/
35
31
 
36
- VALUE_REGEX =
37
- /#{PROPERTY_DECLARATION_AS_DEFAULTS_REGEX}\s*['"](?<value>[^\s]+)['"]/.freeze
32
+ VALUE_REGEX = /#{PROPERTY_DECLARATION_AS_DEFAULTS_REGEX}\s*['"](?<value>[^\s]+)['"]/
38
33
 
39
- GROOVY_SINGLE_PROPERTY_DECLARATION_REGEX =
40
- /(?:^|\s+|ext.)(?<name>[^\s=]+)\s*=#{VALUE_REGEX}/.freeze
34
+ GROOVY_SINGLE_PROPERTY_DECLARATION_REGEX = /(?:^|\s+|ext.)(?<name>[^\s=]+)\s*=#{VALUE_REGEX}/
41
35
 
42
- KOTLIN_SINGLE_PROPERTY_INDEX_DECLARATION_REGEX =
43
- /\s*extra\[['"](?<name>[^\s=]+)['"]\]\s*=#{VALUE_REGEX}/.freeze
36
+ KOTLIN_SINGLE_PROPERTY_INDEX_DECLARATION_REGEX = /\s*extra\[['"](?<name>[^\s=]+)['"]\]\s*=#{VALUE_REGEX}/
44
37
 
45
- KOTLIN_SINGLE_PROPERTY_SET_REGEX =
46
- /\s*set\(['"](?<name>[^\s=]+)['"]\s*,#{VALUE_REGEX}\)/.freeze
38
+ KOTLIN_SINGLE_PROPERTY_SET_REGEX = /\s*set\(['"](?<name>[^\s=]+)['"]\s*,#{VALUE_REGEX}\)/
47
39
 
48
- KOTLIN_SINGLE_PROPERTY_SET_DECLARATION_REGEX =
49
- /\s*extra\.#{KOTLIN_SINGLE_PROPERTY_SET_REGEX}/.freeze
40
+ KOTLIN_SINGLE_PROPERTY_SET_DECLARATION_REGEX = /\s*extra\.#{KOTLIN_SINGLE_PROPERTY_SET_REGEX}/
50
41
 
51
42
  KOTLIN_SINGLE_PROPERTY_DECLARATION_REGEX =
52
- /(#{KOTLIN_SINGLE_PROPERTY_INDEX_DECLARATION_REGEX}|#{KOTLIN_SINGLE_PROPERTY_SET_DECLARATION_REGEX})/.freeze
43
+ /(#{KOTLIN_SINGLE_PROPERTY_INDEX_DECLARATION_REGEX}|#{KOTLIN_SINGLE_PROPERTY_SET_DECLARATION_REGEX})/
53
44
 
54
45
  SINGLE_PROPERTY_DECLARATION_REGEX =
55
- /(#{KOTLIN_SINGLE_PROPERTY_DECLARATION_REGEX}|#{GROOVY_SINGLE_PROPERTY_DECLARATION_REGEX})/.freeze
46
+ /(#{KOTLIN_SINGLE_PROPERTY_DECLARATION_REGEX}|#{GROOVY_SINGLE_PROPERTY_DECLARATION_REGEX})/
56
47
 
57
- GROOVY_MULTI_PROPERTY_DECLARATION_REGEX =
58
- /(?:^|\s+|ext.)(?<namespace>[^\s=]+)\s*=\s*\[(?<values>[^\]]+)\]/m.freeze
48
+ GROOVY_MULTI_PROPERTY_DECLARATION_REGEX = /(?:^|\s+|ext.)(?<namespace>[^\s=]+)\s*=\s*\[(?<values>[^\]]+)\]/m
59
49
 
60
- KOTLIN_BLOCK_PROPERTY_DECLARATION_REGEX =
61
- /\s*(?<namespace>[^\s=]+)\.apply\s*{(?<values>[^\]]+)}/m.freeze
50
+ KOTLIN_BLOCK_PROPERTY_DECLARATION_REGEX = /\s*(?<namespace>[^\s=]+)\.apply\s*{(?<values>[^\]]+)}/m
62
51
 
63
52
  KOTLIN_MULTI_PROPERTY_DECLARATION_REGEX =
64
- /\s*extra\[['"](?<namespace>[^\s=]+)['"]\]\s*=\s*mapOf\((?<values>[^\]]+)\)/m.freeze
53
+ /\s*extra\[['"](?<namespace>[^\s=]+)['"]\]\s*=\s*mapOf\((?<values>[^\]]+)\)/m
65
54
 
66
55
  MULTI_PROPERTY_DECLARATION_REGEX =
67
- /(#{KOTLIN_MULTI_PROPERTY_DECLARATION_REGEX}|#{GROOVY_MULTI_PROPERTY_DECLARATION_REGEX})/.freeze
56
+ /(#{KOTLIN_MULTI_PROPERTY_DECLARATION_REGEX}|#{GROOVY_MULTI_PROPERTY_DECLARATION_REGEX})/
68
57
 
69
- KOTLIN_MAP_NAMESPACED_DECLARATION_REGEX =
70
- /(?:^|\s+)['"](?<name>[^\s:]+)['"]\s*to#{VALUE_REGEX}\s*/.freeze
58
+ KOTLIN_MAP_NAMESPACED_DECLARATION_REGEX = /(?:^|\s+)['"](?<name>[^\s:]+)['"]\s*to#{VALUE_REGEX}\s*/
71
59
 
72
- REGULAR_NAMESPACED_DECLARATION_REGEX =
73
- /(?:^|\s+)(?<name>[^\s:]+)\s*[:=]#{VALUE_REGEX}\s*/.freeze
60
+ REGULAR_NAMESPACED_DECLARATION_REGEX = /(?:^|\s+)(?<name>[^\s:]+)\s*[:=]#{VALUE_REGEX}\s*/
74
61
 
75
62
  NAMESPACED_DECLARATION_REGEX =
76
- /(#{REGULAR_NAMESPACED_DECLARATION_REGEX}|#{KOTLIN_MAP_NAMESPACED_DECLARATION_REGEX})/.freeze
63
+ /(#{REGULAR_NAMESPACED_DECLARATION_REGEX}|#{KOTLIN_MAP_NAMESPACED_DECLARATION_REGEX})/
77
64
  # rubocop:enable Layout/LineLength
78
65
 
79
66
  def initialize(dependency_files:)
@@ -15,16 +15,13 @@ module Dependabot
15
15
  GOOGLE_MAVEN_REPO = "https://maven.google.com"
16
16
  GRADLE_PLUGINS_REPO = "https://plugins.gradle.org/m2"
17
17
 
18
- REPOSITORIES_BLOCK_START = /(?:^|\s)repositories\s*\{/.freeze
18
+ REPOSITORIES_BLOCK_START = /(?:^|\s)repositories\s*\{/
19
19
 
20
- GROOVY_MAVEN_REPO_REGEX =
21
- /maven\s*\{[^\}]*\surl[\s\(]=?[^'"]*['"](?<url>[^'"]+)['"]/.freeze
20
+ GROOVY_MAVEN_REPO_REGEX = /maven\s*\{[^\}]*\surl[\s\(]=?[^'"]*['"](?<url>[^'"]+)['"]/
22
21
 
23
- KOTLIN_MAVEN_REPO_REGEX =
24
- /maven\((url\s?\=\s?)?["](?<url>[^"]+)["]\)/.freeze
22
+ KOTLIN_MAVEN_REPO_REGEX = /maven\((url\s?\=\s?)?["](?<url>[^"]+)["]\)/
25
23
 
26
- MAVEN_REPO_REGEX =
27
- /(#{KOTLIN_MAVEN_REPO_REGEX}|#{GROOVY_MAVEN_REPO_REGEX})/.freeze
24
+ MAVEN_REPO_REGEX = /(#{KOTLIN_MAVEN_REPO_REGEX}|#{GROOVY_MAVEN_REPO_REGEX})/
28
25
 
29
26
  def initialize(dependency_files:, target_dependency_file:)
30
27
  @dependency_files = dependency_files
@@ -25,18 +25,16 @@ module Dependabot
25
25
  (?:\$\{property\((?<property_name>[^:\s]*?)\)\})|
26
26
  (?:\$\{(?<property_name>[^:\s]*?)\})|
27
27
  (?:\$(?<property_name>[^:\s"']*))
28
- /x.freeze
29
-
30
- PART = %r{[^\s,@'":/\\]+}.freeze
31
- VSN_PART = %r{[^\s,'":/\\]+}.freeze
32
- DEPENDENCY_DECLARATION_REGEX =
33
- /(?:\(|\s)\s*['"](?<declaration>#{PART}:#{PART}:#{VSN_PART})['"]/.
34
- freeze
35
- DEPENDENCY_SET_DECLARATION_REGEX =
36
- /(?:^|\s)dependencySet\((?<arguments>[^\)]+)\)\s*\{/.freeze
37
- DEPENDENCY_SET_ENTRY_REGEX = /entry\s+['"](?<name>#{PART})['"]/.freeze
38
- PLUGIN_BLOCK_DECLARATION_REGEX = /(?:^|\s)plugins\s*\{/.freeze
39
- PLUGIN_ID_REGEX = /['"](?<id>#{PART})['"]/.freeze
28
+ /x
29
+
30
+ PART = %r{[^\s,@'":/\\]+}
31
+ VSN_PART = %r{[^\s,'":/\\]+}
32
+ DEPENDENCY_DECLARATION_REGEX = /(?:\(|\s)\s*['"](?<declaration>#{PART}:#{PART}:#{VSN_PART})['"]/
33
+
34
+ DEPENDENCY_SET_DECLARATION_REGEX = /(?:^|\s)dependencySet\((?<arguments>[^\)]+)\)\s*\{/
35
+ DEPENDENCY_SET_ENTRY_REGEX = /entry\s+['"](?<name>#{PART})['"]/
36
+ PLUGIN_BLOCK_DECLARATION_REGEX = /(?:^|\s)plugins\s*\{/
37
+ PLUGIN_ID_REGEX = /['"](?<id>#{PART})['"]/
40
38
 
41
39
  def parse
42
40
  dependency_set = DependencySet.new
@@ -162,9 +160,8 @@ module Dependabot
162
160
  blk.lines.each do |line|
163
161
  name_regex = /(id|kotlin)(\s+#{PLUGIN_ID_REGEX}|\(#{PLUGIN_ID_REGEX}\))/o
164
162
  name = line.match(name_regex)&.named_captures&.fetch("id")
165
- version_regex = /version\s+['"](?<version>#{VSN_PART})['"]/o
166
- version = line.match(version_regex)&.named_captures&.
167
- fetch("version")
163
+ version_regex = /version\s+['"]?(?<version>#{VSN_PART})['"]?/o
164
+ version = format_plugin_version(line.match(version_regex)&.named_captures&.fetch("version"))
168
165
  next unless name && version
169
166
 
170
167
  details = { name: name, group: "plugins", extra_groups: extra_groups(line), version: version }
@@ -176,6 +173,10 @@ module Dependabot
176
173
  dependency_set
177
174
  end
178
175
 
176
+ def format_plugin_version(version)
177
+ version&.match?(/^\w+$/) ? "$#{version}" : version
178
+ end
179
+
179
180
  def extra_groups(line)
180
181
  line.match?(/kotlin(\s+#{PLUGIN_ID_REGEX}|\(#{PLUGIN_ID_REGEX}\))/o) ? ["kotlin"] : []
181
182
  end
@@ -11,8 +11,8 @@ require "dependabot/registry_client"
11
11
  module Dependabot
12
12
  module Gradle
13
13
  class MetadataFinder < Dependabot::MetadataFinders::Base
14
- DOT_SEPARATOR_REGEX = %r{\.(?!\d+([.\/_\-]|$)+)}.freeze
15
- PROPERTY_REGEX = /\$\{(?<property>.*?)\}/.freeze
14
+ DOT_SEPARATOR_REGEX = %r{\.(?!\d+([.\/_\-]|$)+)}
15
+ PROPERTY_REGEX = /\$\{(?<property>.*?)\}/
16
16
  KOTLIN_PLUGIN_REPO_PREFIX = "org.jetbrains.kotlin"
17
17
 
18
18
  private
@@ -8,9 +8,8 @@ module Dependabot
8
8
  module Gradle
9
9
  class Requirement < Gem::Requirement
10
10
  quoted = OPS.keys.map { |k| Regexp.quote k }.join("|")
11
- PATTERN_RAW =
12
- "\\s*(#{quoted})?\\s*(#{Gradle::Version::VERSION_PATTERN})\\s*"
13
- PATTERN = /\A#{PATTERN_RAW}\z/.freeze
11
+ PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gradle::Version::VERSION_PATTERN})\\s*"
12
+ PATTERN = /\A#{PATTERN_RAW}\z/
14
13
 
15
14
  def self.parse(obj)
16
15
  return ["=", Gradle::Version.new(obj.to_s)] if obj.is_a?(Gem::Version)
@@ -30,7 +30,7 @@ module Dependabot
30
30
  "[0-9a-zA-Z]+" \
31
31
  '(?>\.[0-9a-zA-Z]*)*' \
32
32
  '([_\-\+][0-9A-Za-z_-]*(\.[0-9A-Za-z_-]*)*)?'
33
- ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/.freeze
33
+ ANCHORED_VERSION_PATTERN = /\A\s*(#{VERSION_PATTERN})?\s*\z/
34
34
 
35
35
  def self.correct?(version)
36
36
  return false if version.nil?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-gradle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.212.0
4
+ version: 0.213.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-06 00:00:00.000000000 Z
11
+ date: 2022-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dependabot-common
@@ -16,56 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.212.0
19
+ version: 0.213.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.212.0
26
+ version: 0.213.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dependabot-maven
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.212.0
33
+ version: 0.213.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.212.0
41
- - !ruby/object:Gem::Dependency
42
- name: debase
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 0.2.3
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 0.2.3
55
- - !ruby/object:Gem::Dependency
56
- name: debase-ruby_core_source
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 0.10.16
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 0.10.16
40
+ version: 0.213.0
69
41
  - !ruby/object:Gem::Dependency
70
42
  name: debug
71
43
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +72,14 @@ dependencies:
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: 3.12.0
75
+ version: 3.13.0
104
76
  type: :development
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: 3.12.0
82
+ version: 3.13.0
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: rake
113
85
  requirement: !ruby/object:Gem::Requirement
@@ -156,42 +128,28 @@ dependencies:
156
128
  requirements:
157
129
  - - "~>"
158
130
  - !ruby/object:Gem::Version
159
- version: 1.36.0
131
+ version: 1.37.1
160
132
  type: :development
161
133
  prerelease: false
162
134
  version_requirements: !ruby/object:Gem::Requirement
163
135
  requirements:
164
136
  - - "~>"
165
137
  - !ruby/object:Gem::Version
166
- version: 1.36.0
138
+ version: 1.37.1
167
139
  - !ruby/object:Gem::Dependency
168
140
  name: rubocop-performance
169
141
  requirement: !ruby/object:Gem::Requirement
170
142
  requirements:
171
143
  - - "~>"
172
144
  - !ruby/object:Gem::Version
173
- version: 1.14.2
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: 1.14.2
181
- - !ruby/object:Gem::Dependency
182
- name: ruby-debug-ide
183
- requirement: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - "~>"
186
- - !ruby/object:Gem::Version
187
- version: 0.7.3
145
+ version: 1.15.0
188
146
  type: :development
189
147
  prerelease: false
190
148
  version_requirements: !ruby/object:Gem::Requirement
191
149
  requirements:
192
150
  - - "~>"
193
151
  - !ruby/object:Gem::Version
194
- version: 0.7.3
152
+ version: 1.15.0
195
153
  - !ruby/object:Gem::Dependency
196
154
  name: simplecov
197
155
  requirement: !ruby/object:Gem::Requirement
@@ -297,14 +255,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
297
255
  requirements:
298
256
  - - ">="
299
257
  - !ruby/object:Gem::Version
300
- version: 2.7.0
258
+ version: 3.1.0
301
259
  required_rubygems_version: !ruby/object:Gem::Requirement
302
260
  requirements:
303
261
  - - ">="
304
262
  - !ruby/object:Gem::Version
305
- version: 2.7.0
263
+ version: 3.1.0
306
264
  requirements: []
307
- rubygems_version: 3.1.6
265
+ rubygems_version: 3.3.7
308
266
  signing_key:
309
267
  specification_version: 4
310
268
  summary: Gradle support for dependabot