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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f56e8c0f198f3f66454b6f05ebbc30f455c49aba8f0da9052b392b2b1b61d084
|
|
4
|
+
data.tar.gz: f7f3831108f7d86a3435f144dbc9d44ced3a04a43800084c1f6c4d1180be1778
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 41c9aa7701bb168005b318eab7ee9f3ebd431066f252d6e5c0a9ca600822d780bad7d420d338857e763d9e65eed1a80259c2fc271f733e9b308cf61add8d6f41
|
|
7
|
+
data.tar.gz: 2c49b78e5e135cf85b073910781c8368f85f305abfd54a341d1592a95ba776d007e5700fc0ff8e7e075be5be50edf63018542efc4564435fd8e43897a920ec99
|
data/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "dependabot/file_fetchers/ruby/bundler"
|
|
4
4
|
require "dependabot/file_fetchers/java_script/npm_and_yarn"
|
|
5
|
-
require "dependabot/file_fetchers/java/maven"
|
|
6
5
|
require "dependabot/file_fetchers/php/composer"
|
|
7
6
|
require "dependabot/file_fetchers/elixir/hex"
|
|
8
7
|
require "dependabot/file_fetchers/go/dep"
|
|
@@ -13,7 +12,6 @@ module Dependabot
|
|
|
13
12
|
@file_fetchers = {
|
|
14
13
|
"bundler" => FileFetchers::Ruby::Bundler,
|
|
15
14
|
"npm_and_yarn" => FileFetchers::JavaScript::NpmAndYarn,
|
|
16
|
-
"maven" => FileFetchers::Java::Maven,
|
|
17
15
|
"composer" => FileFetchers::Php::Composer,
|
|
18
16
|
"hex" => FileFetchers::Elixir::Hex,
|
|
19
17
|
"dep" => FileFetchers::Go::Dep,
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "dependabot/file_parsers/ruby/bundler"
|
|
4
4
|
require "dependabot/file_parsers/java_script/npm_and_yarn"
|
|
5
|
-
require "dependabot/file_parsers/java/maven"
|
|
6
5
|
require "dependabot/file_parsers/php/composer"
|
|
7
6
|
require "dependabot/file_parsers/elixir/hex"
|
|
8
7
|
require "dependabot/file_parsers/go/dep"
|
|
@@ -13,7 +12,6 @@ module Dependabot
|
|
|
13
12
|
@file_parsers = {
|
|
14
13
|
"bundler" => FileParsers::Ruby::Bundler,
|
|
15
14
|
"npm_and_yarn" => FileParsers::JavaScript::NpmAndYarn,
|
|
16
|
-
"maven" => FileParsers::Java::Maven,
|
|
17
15
|
"composer" => FileParsers::Php::Composer,
|
|
18
16
|
"hex" => FileParsers::Elixir::Hex,
|
|
19
17
|
"dep" => FileParsers::Go::Dep,
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "dependabot/file_updaters/ruby/bundler"
|
|
4
4
|
require "dependabot/file_updaters/java_script/npm_and_yarn"
|
|
5
|
-
require "dependabot/file_updaters/java/maven"
|
|
6
5
|
require "dependabot/file_updaters/php/composer"
|
|
7
6
|
require "dependabot/file_updaters/elixir/hex"
|
|
8
7
|
require "dependabot/file_updaters/go/dep"
|
|
@@ -13,7 +12,6 @@ module Dependabot
|
|
|
13
12
|
@file_updaters = {
|
|
14
13
|
"bundler" => FileUpdaters::Ruby::Bundler,
|
|
15
14
|
"npm_and_yarn" => FileUpdaters::JavaScript::NpmAndYarn,
|
|
16
|
-
"maven" => FileUpdaters::Java::Maven,
|
|
17
15
|
"composer" => FileUpdaters::Php::Composer,
|
|
18
16
|
"hex" => FileUpdaters::Elixir::Hex,
|
|
19
17
|
"dep" => FileUpdaters::Go::Dep,
|
|
Binary file
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "dependabot/metadata_finders/ruby/bundler"
|
|
4
4
|
require "dependabot/metadata_finders/java_script/npm_and_yarn"
|
|
5
|
-
require "dependabot/metadata_finders/java/maven"
|
|
6
5
|
require "dependabot/metadata_finders/php/composer"
|
|
7
6
|
require "dependabot/metadata_finders/elixir/hex"
|
|
8
7
|
require "dependabot/metadata_finders/go/dep"
|
|
@@ -12,7 +11,6 @@ module Dependabot
|
|
|
12
11
|
@metadata_finders = {
|
|
13
12
|
"bundler" => MetadataFinders::Ruby::Bundler,
|
|
14
13
|
"npm_and_yarn" => MetadataFinders::JavaScript::NpmAndYarn,
|
|
15
|
-
"maven" => MetadataFinders::Java::Maven,
|
|
16
14
|
"composer" => MetadataFinders::Php::Composer,
|
|
17
15
|
"hex" => MetadataFinders::Elixir::Hex,
|
|
18
16
|
"dep" => MetadataFinders::Go::Dep,
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
require "dependabot/update_checkers/ruby/bundler"
|
|
4
4
|
require "dependabot/update_checkers/java_script/npm_and_yarn"
|
|
5
|
-
require "dependabot/update_checkers/java/maven"
|
|
6
5
|
require "dependabot/update_checkers/php/composer"
|
|
7
6
|
require "dependabot/update_checkers/elixir/hex"
|
|
8
7
|
require "dependabot/update_checkers/go/dep"
|
|
@@ -13,7 +12,6 @@ module Dependabot
|
|
|
13
12
|
@update_checkers = {
|
|
14
13
|
"bundler" => UpdateCheckers::Ruby::Bundler,
|
|
15
14
|
"npm_and_yarn" => UpdateCheckers::JavaScript::NpmAndYarn,
|
|
16
|
-
"maven" => UpdateCheckers::Java::Maven,
|
|
17
15
|
"composer" => UpdateCheckers::Php::Composer,
|
|
18
16
|
"hex" => UpdateCheckers::Elixir::Hex,
|
|
19
17
|
"dep" => UpdateCheckers::Go::Dep,
|
data/lib/dependabot/utils.rb
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "dependabot/utils/elixir/version"
|
|
4
|
-
require "dependabot/utils/java/version"
|
|
5
4
|
require "dependabot/utils/java_script/version"
|
|
6
5
|
require "dependabot/utils/php/version"
|
|
7
6
|
require "dependabot/utils/go/version"
|
|
8
7
|
|
|
9
8
|
require "dependabot/utils/elixir/requirement"
|
|
10
|
-
require "dependabot/utils/java/requirement"
|
|
11
9
|
require "dependabot/utils/java_script/requirement"
|
|
12
10
|
require "dependabot/utils/php/requirement"
|
|
13
11
|
require "dependabot/utils/ruby/requirement"
|
|
@@ -21,7 +19,6 @@ module Dependabot
|
|
|
21
19
|
"bundler" => Gem::Version,
|
|
22
20
|
"submodules" => Gem::Version,
|
|
23
21
|
"docker" => Gem::Version,
|
|
24
|
-
"maven" => Utils::Java::Version,
|
|
25
22
|
"npm_and_yarn" => Utils::JavaScript::Version,
|
|
26
23
|
"composer" => Utils::Php::Version,
|
|
27
24
|
"hex" => Utils::Elixir::Version,
|
|
@@ -44,7 +41,6 @@ module Dependabot
|
|
|
44
41
|
"bundler" => Utils::Ruby::Requirement,
|
|
45
42
|
"submodules" => Utils::Ruby::Requirement,
|
|
46
43
|
"docker" => Utils::Ruby::Requirement,
|
|
47
|
-
"maven" => Utils::Java::Requirement,
|
|
48
44
|
"npm_and_yarn" => Utils::JavaScript::Requirement,
|
|
49
45
|
"composer" => Utils::Php::Requirement,
|
|
50
46
|
"hex" => Utils::Elixir::Requirement,
|
data/lib/dependabot/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-core
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.85.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dependabot
|
|
@@ -378,7 +378,6 @@ files:
|
|
|
378
378
|
- lib/dependabot/file_fetchers/elixir/hex.rb
|
|
379
379
|
- lib/dependabot/file_fetchers/go/dep.rb
|
|
380
380
|
- lib/dependabot/file_fetchers/go/modules.rb
|
|
381
|
-
- lib/dependabot/file_fetchers/java/maven.rb
|
|
382
381
|
- lib/dependabot/file_fetchers/java_script/npm_and_yarn.rb
|
|
383
382
|
- lib/dependabot/file_fetchers/java_script/npm_and_yarn/path_dependency_builder.rb
|
|
384
383
|
- lib/dependabot/file_fetchers/php/composer.rb
|
|
@@ -394,9 +393,6 @@ files:
|
|
|
394
393
|
- lib/dependabot/file_parsers/go/dep.rb
|
|
395
394
|
- lib/dependabot/file_parsers/go/modules.rb
|
|
396
395
|
- lib/dependabot/file_parsers/go/modules/go_mod_parser.rb
|
|
397
|
-
- lib/dependabot/file_parsers/java/maven.rb
|
|
398
|
-
- lib/dependabot/file_parsers/java/maven/property_value_finder.rb
|
|
399
|
-
- lib/dependabot/file_parsers/java/maven/repositories_finder.rb
|
|
400
396
|
- lib/dependabot/file_parsers/java_script/npm_and_yarn.rb
|
|
401
397
|
- lib/dependabot/file_parsers/php/composer.rb
|
|
402
398
|
- lib/dependabot/file_parsers/ruby/bundler.rb
|
|
@@ -416,9 +412,6 @@ files:
|
|
|
416
412
|
- lib/dependabot/file_updaters/go/dep/manifest_updater.rb
|
|
417
413
|
- lib/dependabot/file_updaters/go/modules.rb
|
|
418
414
|
- lib/dependabot/file_updaters/go/modules/go_mod_updater.rb
|
|
419
|
-
- lib/dependabot/file_updaters/java/maven.rb
|
|
420
|
-
- lib/dependabot/file_updaters/java/maven/declaration_finder.rb
|
|
421
|
-
- lib/dependabot/file_updaters/java/maven/property_value_updater.rb
|
|
422
415
|
- lib/dependabot/file_updaters/java_script/npm_and_yarn.rb
|
|
423
416
|
- lib/dependabot/file_updaters/java_script/npm_and_yarn/npm_lockfile_updater.rb
|
|
424
417
|
- lib/dependabot/file_updaters/java_script/npm_and_yarn/npmrc_builder.rb
|
|
@@ -428,6 +421,7 @@ files:
|
|
|
428
421
|
- lib/dependabot/file_updaters/php/composer.rb
|
|
429
422
|
- lib/dependabot/file_updaters/php/composer/lockfile_updater.rb
|
|
430
423
|
- lib/dependabot/file_updaters/php/composer/manifest_updater.rb
|
|
424
|
+
- lib/dependabot/file_updaters/ruby/.DS_Store
|
|
431
425
|
- lib/dependabot/file_updaters/ruby/bundler.rb
|
|
432
426
|
- lib/dependabot/file_updaters/ruby/bundler/gemfile_updater.rb
|
|
433
427
|
- lib/dependabot/file_updaters/ruby/bundler/gemspec_dependency_name_finder.rb
|
|
@@ -447,7 +441,6 @@ files:
|
|
|
447
441
|
- lib/dependabot/metadata_finders/base/release_finder.rb
|
|
448
442
|
- lib/dependabot/metadata_finders/elixir/hex.rb
|
|
449
443
|
- lib/dependabot/metadata_finders/go/dep.rb
|
|
450
|
-
- lib/dependabot/metadata_finders/java/maven.rb
|
|
451
444
|
- lib/dependabot/metadata_finders/java_script/npm_and_yarn.rb
|
|
452
445
|
- lib/dependabot/metadata_finders/php/composer.rb
|
|
453
446
|
- lib/dependabot/metadata_finders/ruby/bundler.rb
|
|
@@ -475,10 +468,6 @@ files:
|
|
|
475
468
|
- lib/dependabot/update_checkers/go/dep/requirements_updater.rb
|
|
476
469
|
- lib/dependabot/update_checkers/go/dep/version_resolver.rb
|
|
477
470
|
- lib/dependabot/update_checkers/go/modules.rb
|
|
478
|
-
- lib/dependabot/update_checkers/java/maven.rb
|
|
479
|
-
- lib/dependabot/update_checkers/java/maven/property_updater.rb
|
|
480
|
-
- lib/dependabot/update_checkers/java/maven/requirements_updater.rb
|
|
481
|
-
- lib/dependabot/update_checkers/java/maven/version_finder.rb
|
|
482
471
|
- lib/dependabot/update_checkers/java_script/npm_and_yarn.rb
|
|
483
472
|
- lib/dependabot/update_checkers/java_script/npm_and_yarn/latest_version_finder.rb
|
|
484
473
|
- lib/dependabot/update_checkers/java_script/npm_and_yarn/library_detector.rb
|
|
@@ -504,8 +493,6 @@ files:
|
|
|
504
493
|
- lib/dependabot/utils/go/requirement.rb
|
|
505
494
|
- lib/dependabot/utils/go/shared_helper.rb
|
|
506
495
|
- lib/dependabot/utils/go/version.rb
|
|
507
|
-
- lib/dependabot/utils/java/requirement.rb
|
|
508
|
-
- lib/dependabot/utils/java/version.rb
|
|
509
496
|
- lib/dependabot/utils/java_script/requirement.rb
|
|
510
497
|
- lib/dependabot/utils/java_script/version.rb
|
|
511
498
|
- lib/dependabot/utils/php/requirement.rb
|
|
@@ -532,7 +519,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
532
519
|
version: 2.7.3
|
|
533
520
|
requirements: []
|
|
534
521
|
rubyforge_project:
|
|
535
|
-
rubygems_version: 2.7.
|
|
522
|
+
rubygems_version: 2.7.6
|
|
536
523
|
signing_key:
|
|
537
524
|
specification_version: 4
|
|
538
525
|
summary: Automated dependency management
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "nokogiri"
|
|
4
|
-
require "dependabot/file_fetchers/base"
|
|
5
|
-
|
|
6
|
-
module Dependabot
|
|
7
|
-
module FileFetchers
|
|
8
|
-
module Java
|
|
9
|
-
class Maven < Dependabot::FileFetchers::Base
|
|
10
|
-
MODULE_SELECTOR = "project > modules > module"
|
|
11
|
-
|
|
12
|
-
def self.required_files_in?(filenames)
|
|
13
|
-
(%w(pom.xml) - filenames).empty?
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def self.required_files_message
|
|
17
|
-
"Repo must contain a pom.xml."
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def fetch_files
|
|
23
|
-
fetched_files = []
|
|
24
|
-
fetched_files << pom
|
|
25
|
-
fetched_files += child_poms
|
|
26
|
-
fetched_files += relative_path_parents(fetched_files)
|
|
27
|
-
fetched_files.uniq
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def pom
|
|
31
|
-
@pom ||= fetch_file_from_host("pom.xml")
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def child_poms
|
|
35
|
-
recursively_fetch_child_poms(pom, fetched_filenames: ["pom.xml"])
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def relative_path_parents(fetched_files)
|
|
39
|
-
fetched_files.flat_map do |file|
|
|
40
|
-
recursively_fetch_relative_path_parents(
|
|
41
|
-
file,
|
|
42
|
-
fetched_filenames: fetched_files.map(&:name)
|
|
43
|
-
)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def recursively_fetch_child_poms(pom, fetched_filenames:)
|
|
48
|
-
base_path = pom.name.gsub(/pom\.xml$/, "")
|
|
49
|
-
doc = Nokogiri::XML(pom.content)
|
|
50
|
-
|
|
51
|
-
doc.css(MODULE_SELECTOR).flat_map do |module_node|
|
|
52
|
-
relative_path = module_node.content.strip
|
|
53
|
-
name_parts = [
|
|
54
|
-
base_path,
|
|
55
|
-
relative_path,
|
|
56
|
-
relative_path.end_with?("pom.xml") ? nil : "pom.xml"
|
|
57
|
-
].compact.reject(&:empty?)
|
|
58
|
-
path = Pathname.new(File.join(*name_parts)).cleanpath.to_path
|
|
59
|
-
|
|
60
|
-
next [] if fetched_filenames.include?(path)
|
|
61
|
-
|
|
62
|
-
child_pom = fetch_file_from_host(path)
|
|
63
|
-
fetched_filenames += [child_pom.name]
|
|
64
|
-
[
|
|
65
|
-
child_pom,
|
|
66
|
-
recursively_fetch_child_poms(
|
|
67
|
-
child_pom,
|
|
68
|
-
fetched_filenames: fetched_filenames
|
|
69
|
-
)
|
|
70
|
-
].flatten
|
|
71
|
-
rescue Dependabot::DependencyFileNotFound
|
|
72
|
-
raise unless fetch_file_from_host_or_submodule(path)
|
|
73
|
-
|
|
74
|
-
[] # Ignore any child submodules (since we can't update them)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def recursively_fetch_relative_path_parents(pom, fetched_filenames:)
|
|
79
|
-
path = parent_path_for_pom(pom)
|
|
80
|
-
|
|
81
|
-
if fetched_filenames.include?(path) ||
|
|
82
|
-
fetched_filenames.include?(path.gsub("pom.xml", "pom_parent.xml"))
|
|
83
|
-
return []
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
full_path_parts =
|
|
87
|
-
[directory.gsub(%r{^/}, ""), path].reject(&:empty?).compact
|
|
88
|
-
|
|
89
|
-
full_path = Pathname.new(File.join(*full_path_parts)).
|
|
90
|
-
cleanpath.to_path
|
|
91
|
-
|
|
92
|
-
return [] if full_path.start_with?("..")
|
|
93
|
-
|
|
94
|
-
parent_pom = fetch_file_from_host(path)
|
|
95
|
-
parent_pom.support_file = true
|
|
96
|
-
parent_pom.name = parent_pom.name.gsub("pom.xml", "pom_parent.xml")
|
|
97
|
-
|
|
98
|
-
[
|
|
99
|
-
parent_pom,
|
|
100
|
-
recursively_fetch_relative_path_parents(
|
|
101
|
-
parent_pom,
|
|
102
|
-
fetched_filenames: fetched_filenames + [parent_pom.name]
|
|
103
|
-
)
|
|
104
|
-
].flatten
|
|
105
|
-
rescue Dependabot::DependencyFileNotFound
|
|
106
|
-
[]
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def parent_path_for_pom(pom)
|
|
110
|
-
doc = Nokogiri::XML(pom.content)
|
|
111
|
-
doc.remove_namespaces!
|
|
112
|
-
|
|
113
|
-
relative_parent_path =
|
|
114
|
-
doc.at_xpath("/project/parent/relativePath")&.content&.strip || ".."
|
|
115
|
-
|
|
116
|
-
name_parts = [
|
|
117
|
-
pom.name.gsub(/pom\.xml$/, "").gsub(/pom_parent\.xml$/, ""),
|
|
118
|
-
relative_parent_path,
|
|
119
|
-
relative_parent_path.end_with?("pom.xml") ? nil : "pom.xml"
|
|
120
|
-
].compact.reject(&:empty?)
|
|
121
|
-
|
|
122
|
-
Pathname.new(File.join(*name_parts)).cleanpath.to_path
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
end
|
|
126
|
-
end
|
|
127
|
-
end
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "nokogiri"
|
|
4
|
-
|
|
5
|
-
require "dependabot/dependency"
|
|
6
|
-
require "dependabot/file_parsers/base"
|
|
7
|
-
require "dependabot/errors"
|
|
8
|
-
|
|
9
|
-
# The best Maven documentation is at:
|
|
10
|
-
# - http://maven.apache.org/pom.html
|
|
11
|
-
module Dependabot
|
|
12
|
-
module FileParsers
|
|
13
|
-
module Java
|
|
14
|
-
class Maven < Dependabot::FileParsers::Base
|
|
15
|
-
require "dependabot/file_parsers/base/dependency_set"
|
|
16
|
-
require_relative "maven/property_value_finder"
|
|
17
|
-
|
|
18
|
-
# The following "dependencies" are candidates for updating:
|
|
19
|
-
# - The project's parent
|
|
20
|
-
# - Any dependencies (incl. those in dependencyManagement or plugins)
|
|
21
|
-
# - Any plugins (incl. those in pluginManagement)
|
|
22
|
-
# - Any extensions
|
|
23
|
-
DEPENDENCY_SELECTOR = "project > parent, "\
|
|
24
|
-
"dependencies > dependency, "\
|
|
25
|
-
"extensions > extension"
|
|
26
|
-
PLUGIN_SELECTOR = "plugins > plugin"
|
|
27
|
-
|
|
28
|
-
# Regex to get the property name from a declaration that uses a property
|
|
29
|
-
PROPERTY_REGEX = /\$\{(?<property>.*?)\}/.freeze
|
|
30
|
-
|
|
31
|
-
def parse
|
|
32
|
-
dependency_set = DependencySet.new
|
|
33
|
-
pomfiles.each { |pom| dependency_set += pomfile_dependencies(pom) }
|
|
34
|
-
dependency_set.dependencies
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
private
|
|
38
|
-
|
|
39
|
-
def pomfile_dependencies(pom)
|
|
40
|
-
dependency_set = DependencySet.new
|
|
41
|
-
|
|
42
|
-
errors = []
|
|
43
|
-
doc = Nokogiri::XML(pom.content)
|
|
44
|
-
doc.remove_namespaces!
|
|
45
|
-
|
|
46
|
-
doc.css(DEPENDENCY_SELECTOR).each do |dependency_node|
|
|
47
|
-
dep = dependency_from_dependency_node(pom, dependency_node)
|
|
48
|
-
dependency_set << dep if dep
|
|
49
|
-
rescue DependencyFileNotEvaluatable => error
|
|
50
|
-
errors << error
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
doc.css(PLUGIN_SELECTOR).each do |dependency_node|
|
|
54
|
-
dep = dependency_from_plugin_node(pom, dependency_node)
|
|
55
|
-
dependency_set << dep if dep
|
|
56
|
-
rescue DependencyFileNotEvaluatable => error
|
|
57
|
-
errors << error
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
raise errors.first if errors.any? && dependency_set.dependencies.none?
|
|
61
|
-
|
|
62
|
-
dependency_set
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def dependency_from_dependency_node(pom, dependency_node)
|
|
66
|
-
return unless (name = dependency_name(dependency_node, pom))
|
|
67
|
-
return if internal_dependency_names.include?(name)
|
|
68
|
-
|
|
69
|
-
build_dependency(pom, dependency_node, name)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def dependency_from_plugin_node(pom, dependency_node)
|
|
73
|
-
return unless (name = plugin_name(dependency_node, pom))
|
|
74
|
-
return if internal_dependency_names.include?(name)
|
|
75
|
-
|
|
76
|
-
build_dependency(pom, dependency_node, name)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def build_dependency(pom, dependency_node, name)
|
|
80
|
-
property_details =
|
|
81
|
-
{
|
|
82
|
-
property_name: version_property_name(dependency_node),
|
|
83
|
-
property_source: property_source(dependency_node, pom)
|
|
84
|
-
}.compact
|
|
85
|
-
|
|
86
|
-
Dependency.new(
|
|
87
|
-
name: name,
|
|
88
|
-
version: dependency_version(pom, dependency_node),
|
|
89
|
-
package_manager: "maven",
|
|
90
|
-
requirements: [{
|
|
91
|
-
requirement: dependency_requirement(pom, dependency_node),
|
|
92
|
-
file: pom.name,
|
|
93
|
-
groups: [],
|
|
94
|
-
source: nil,
|
|
95
|
-
metadata: {
|
|
96
|
-
packaging_type: packaging_type(pom, dependency_node)
|
|
97
|
-
}.merge(property_details)
|
|
98
|
-
}]
|
|
99
|
-
)
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def dependency_name(dependency_node, pom)
|
|
103
|
-
return unless dependency_node.at_xpath("./groupId")
|
|
104
|
-
return unless dependency_node.at_xpath("./artifactId")
|
|
105
|
-
|
|
106
|
-
[
|
|
107
|
-
evaluated_value(
|
|
108
|
-
dependency_node.at_xpath("./groupId").content.strip,
|
|
109
|
-
pom
|
|
110
|
-
),
|
|
111
|
-
evaluated_value(
|
|
112
|
-
dependency_node.at_xpath("./artifactId").content.strip,
|
|
113
|
-
pom
|
|
114
|
-
)
|
|
115
|
-
].join(":")
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def plugin_name(dependency_node, pom)
|
|
119
|
-
return unless plugin_group_id(pom, dependency_node)
|
|
120
|
-
return unless dependency_node.at_xpath("./artifactId")
|
|
121
|
-
|
|
122
|
-
[
|
|
123
|
-
plugin_group_id(pom, dependency_node),
|
|
124
|
-
evaluated_value(
|
|
125
|
-
dependency_node.at_xpath("./artifactId").content.strip,
|
|
126
|
-
pom
|
|
127
|
-
)
|
|
128
|
-
].join(":")
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
def plugin_group_id(pom, node)
|
|
132
|
-
return "org.apache.maven.plugins" unless node.at_xpath("./groupId")
|
|
133
|
-
|
|
134
|
-
evaluated_value(
|
|
135
|
-
node.at_xpath("./groupId").content.strip,
|
|
136
|
-
pom
|
|
137
|
-
)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def dependency_version(pom, dependency_node)
|
|
141
|
-
requirement = dependency_requirement(pom, dependency_node)
|
|
142
|
-
return nil unless requirement
|
|
143
|
-
|
|
144
|
-
# If a range is specified then we can't tell the exact version
|
|
145
|
-
return nil if requirement.include?(",")
|
|
146
|
-
|
|
147
|
-
# Remove brackets if present (and not denoting a range)
|
|
148
|
-
requirement.gsub(/[\(\)\[\]]/, "").strip
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def dependency_requirement(pom, dependency_node)
|
|
152
|
-
return unless dependency_node.at_xpath("./version")
|
|
153
|
-
|
|
154
|
-
version_content = dependency_node.at_xpath("./version").content.strip
|
|
155
|
-
version_content = evaluated_value(version_content, pom)
|
|
156
|
-
|
|
157
|
-
version_content.empty? ? nil : version_content
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def packaging_type(pom, dependency_node)
|
|
161
|
-
return "pom" if dependency_node.node_name == "parent"
|
|
162
|
-
return "jar" unless dependency_node.at_xpath("./type")
|
|
163
|
-
|
|
164
|
-
packaging_type_content = dependency_node.at_xpath("./type").
|
|
165
|
-
content.strip
|
|
166
|
-
|
|
167
|
-
evaluated_value(packaging_type_content, pom)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def version_property_name(dependency_node)
|
|
171
|
-
return unless dependency_node.at_xpath("./version")
|
|
172
|
-
|
|
173
|
-
version_content = dependency_node.at_xpath("./version").content.strip
|
|
174
|
-
|
|
175
|
-
return unless version_content.match?(PROPERTY_REGEX)
|
|
176
|
-
|
|
177
|
-
version_content.
|
|
178
|
-
match(PROPERTY_REGEX).
|
|
179
|
-
named_captures.fetch("property")
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
def evaluated_value(value, pom)
|
|
183
|
-
return value unless value.match?(PROPERTY_REGEX)
|
|
184
|
-
|
|
185
|
-
property_name = value.match(PROPERTY_REGEX).
|
|
186
|
-
named_captures.fetch("property")
|
|
187
|
-
property_value = value_for_property(property_name, pom)
|
|
188
|
-
|
|
189
|
-
value.gsub(PROPERTY_REGEX, property_value)
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
def property_source(dependency_node, pom)
|
|
193
|
-
property_name = version_property_name(dependency_node)
|
|
194
|
-
return unless property_name
|
|
195
|
-
|
|
196
|
-
declaring_pom =
|
|
197
|
-
property_value_finder.
|
|
198
|
-
property_details(property_name: property_name, callsite_pom: pom)&.
|
|
199
|
-
fetch(:file)
|
|
200
|
-
|
|
201
|
-
return declaring_pom if declaring_pom
|
|
202
|
-
|
|
203
|
-
msg = "Property not found: #{property_name}"
|
|
204
|
-
raise DependencyFileNotEvaluatable, msg
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def value_for_property(property_name, pom)
|
|
208
|
-
value =
|
|
209
|
-
property_value_finder.
|
|
210
|
-
property_details(property_name: property_name, callsite_pom: pom)&.
|
|
211
|
-
fetch(:value)
|
|
212
|
-
|
|
213
|
-
return value if value
|
|
214
|
-
|
|
215
|
-
msg = "Property not found: #{property_name}"
|
|
216
|
-
raise DependencyFileNotEvaluatable, msg
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# Cached, since this can makes calls to the registry (to get property
|
|
220
|
-
# values from parent POMs)
|
|
221
|
-
def property_value_finder
|
|
222
|
-
@property_value_finder ||=
|
|
223
|
-
PropertyValueFinder.new(dependency_files: dependency_files)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
def pomfiles
|
|
227
|
-
# Note: this (correctly) excludes any parent POMs that were downloaded
|
|
228
|
-
@pomfiles ||=
|
|
229
|
-
dependency_files.select { |f| f.name.end_with?("pom.xml") }
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
def internal_dependency_names
|
|
233
|
-
@internal_dependency_names ||=
|
|
234
|
-
dependency_files.map do |pom|
|
|
235
|
-
doc = Nokogiri::XML(pom.content)
|
|
236
|
-
group_id = doc.at_css("project > groupId") ||
|
|
237
|
-
doc.at_css("project > parent > groupId")
|
|
238
|
-
artifact_id = doc.at_css("project > artifactId")
|
|
239
|
-
|
|
240
|
-
next unless group_id && artifact_id
|
|
241
|
-
|
|
242
|
-
[group_id.content.strip, artifact_id.content.strip].join(":")
|
|
243
|
-
end.compact
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
def check_required_files
|
|
247
|
-
raise "No pom.xml!" unless get_original_file("pom.xml")
|
|
248
|
-
end
|
|
249
|
-
end
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
end
|