dependabot-nuget 0.80.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 +7 -0
- data/lib/dependabot/nuget/file_fetcher/import_paths_finder.rb +49 -0
- data/lib/dependabot/nuget/file_fetcher/sln_project_paths_finder.rb +53 -0
- data/lib/dependabot/nuget/file_fetcher.rb +216 -0
- data/lib/dependabot/nuget/file_parser/packages_config_parser.rb +63 -0
- data/lib/dependabot/nuget/file_parser/project_file_parser.rb +154 -0
- data/lib/dependabot/nuget/file_parser/property_value_finder.rb +129 -0
- data/lib/dependabot/nuget/file_parser.rb +86 -0
- data/lib/dependabot/nuget/file_updater/packages_config_declaration_finder.rb +67 -0
- data/lib/dependabot/nuget/file_updater/project_file_declaration_finder.rb +76 -0
- data/lib/dependabot/nuget/file_updater/property_value_updater.rb +62 -0
- data/lib/dependabot/nuget/file_updater.rb +152 -0
- data/lib/dependabot/nuget/metadata_finder.rb +117 -0
- data/lib/dependabot/nuget/requirement.rb +90 -0
- data/lib/dependabot/nuget/update_checker/property_updater.rb +95 -0
- data/lib/dependabot/nuget/update_checker/repository_finder.rb +230 -0
- data/lib/dependabot/nuget/update_checker/requirements_updater.rb +79 -0
- data/lib/dependabot/nuget/update_checker/version_finder.rb +229 -0
- data/lib/dependabot/nuget/update_checker.rb +128 -0
- data/lib/dependabot/nuget/version.rb +23 -0
- data/lib/dependabot/nuget.rb +10 -0
- metadata +190 -0
@@ -0,0 +1,128 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dependabot/nuget/file_parser"
|
4
|
+
require "dependabot/update_checkers"
|
5
|
+
require "dependabot/update_checkers/base"
|
6
|
+
|
7
|
+
module Dependabot
|
8
|
+
module Nuget
|
9
|
+
class UpdateChecker < Dependabot::UpdateCheckers::Base
|
10
|
+
require_relative "update_checker/version_finder"
|
11
|
+
require_relative "update_checker/property_updater"
|
12
|
+
require_relative "update_checker/requirements_updater"
|
13
|
+
|
14
|
+
def latest_version
|
15
|
+
@latest_version = latest_version_details&.fetch(:version)
|
16
|
+
end
|
17
|
+
|
18
|
+
def latest_resolvable_version
|
19
|
+
# TODO: Check version resolution!
|
20
|
+
return nil if version_comes_from_multi_dependency_property?
|
21
|
+
|
22
|
+
latest_version
|
23
|
+
end
|
24
|
+
|
25
|
+
def latest_resolvable_version_with_no_unlock
|
26
|
+
# Irrelevant, since Nuget has a single dependency file
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def updated_requirements
|
31
|
+
RequirementsUpdater.new(
|
32
|
+
requirements: dependency.requirements,
|
33
|
+
latest_version: latest_version&.to_s,
|
34
|
+
source_details: latest_version_details&.
|
35
|
+
slice(:nuspec_url, :repo_url, :source_url)
|
36
|
+
).updated_requirements
|
37
|
+
end
|
38
|
+
|
39
|
+
def up_to_date?
|
40
|
+
# If any requirements have an uninterpolated property in them then
|
41
|
+
# that property couldn't be found, and we assume that the dependency
|
42
|
+
# is up-to-date
|
43
|
+
return true unless requirements_unlocked_or_can_be?
|
44
|
+
|
45
|
+
super
|
46
|
+
end
|
47
|
+
|
48
|
+
def requirements_unlocked_or_can_be?
|
49
|
+
# If any requirements have an uninterpolated property in them then
|
50
|
+
# that property couldn't be found, and the requirement therefore
|
51
|
+
# cannot be unlocked (since we can't update that property)
|
52
|
+
namespace = Nuget::FileParser::PropertyValueFinder
|
53
|
+
dependency.requirements.none? do |req|
|
54
|
+
req.fetch(:requirement)&.match?(namespace::PROPERTY_REGEX)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def latest_version_resolvable_with_full_unlock?
|
61
|
+
return false unless version_comes_from_multi_dependency_property?
|
62
|
+
|
63
|
+
property_updater.update_possible?
|
64
|
+
end
|
65
|
+
|
66
|
+
def updated_dependencies_after_full_unlock
|
67
|
+
property_updater.updated_dependencies
|
68
|
+
end
|
69
|
+
|
70
|
+
def latest_version_details
|
71
|
+
@latest_version_details ||= version_finder.latest_version_details
|
72
|
+
end
|
73
|
+
|
74
|
+
def version_finder
|
75
|
+
@version_finder ||=
|
76
|
+
VersionFinder.new(
|
77
|
+
dependency: dependency,
|
78
|
+
dependency_files: dependency_files,
|
79
|
+
credentials: credentials,
|
80
|
+
ignored_versions: ignored_versions
|
81
|
+
)
|
82
|
+
end
|
83
|
+
|
84
|
+
def property_updater
|
85
|
+
@property_updater ||=
|
86
|
+
PropertyUpdater.new(
|
87
|
+
dependency: dependency,
|
88
|
+
dependency_files: dependency_files,
|
89
|
+
target_version_details: latest_version_details,
|
90
|
+
credentials: credentials,
|
91
|
+
ignored_versions: ignored_versions
|
92
|
+
)
|
93
|
+
end
|
94
|
+
|
95
|
+
def version_comes_from_multi_dependency_property?
|
96
|
+
declarations_using_a_property.any? do |requirement|
|
97
|
+
property_name = requirement.fetch(:metadata).fetch(:property_name)
|
98
|
+
|
99
|
+
all_property_based_dependencies.any? do |dep|
|
100
|
+
next false if dep.name == dependency.name
|
101
|
+
|
102
|
+
dep.requirements.any? do |req|
|
103
|
+
req.dig(:metadata, :property_name) == property_name
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def declarations_using_a_property
|
110
|
+
@declarations_using_a_property ||=
|
111
|
+
dependency.requirements.
|
112
|
+
select { |req| req.dig(:metadata, :property_name) }
|
113
|
+
end
|
114
|
+
|
115
|
+
def all_property_based_dependencies
|
116
|
+
@all_property_based_dependencies ||=
|
117
|
+
Nuget::FileParser.new(
|
118
|
+
dependency_files: dependency_files,
|
119
|
+
source: nil
|
120
|
+
).parse.select do |dep|
|
121
|
+
dep.requirements.any? { |req| req.dig(:metadata, :property_name) }
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
Dependabot::UpdateCheckers.register("nuget", Dependabot::Nuget::UpdateChecker)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dependabot/utils"
|
4
|
+
|
5
|
+
# Dotnet pre-release versions use 1.0.1-rc1 syntax, which Gem::Version
|
6
|
+
# converts into 1.0.1.pre.rc1. We override the `to_s` method to stop that
|
7
|
+
# alteration.
|
8
|
+
module Dependabot
|
9
|
+
module Nuget
|
10
|
+
class Version < Gem::Version
|
11
|
+
def initialize(version)
|
12
|
+
@version_string = version.to_s
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
@version_string
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
Dependabot::Utils.register_version_class("nuget", Dependabot::Nuget::Version)
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# These all need to be required so the various classes can be registered in a
|
4
|
+
# lookup table of package manager names to concrete classes.
|
5
|
+
require "dependabot/nuget/file_fetcher"
|
6
|
+
require "dependabot/nuget/file_parser"
|
7
|
+
require "dependabot/nuget/update_checker"
|
8
|
+
require "dependabot/nuget/file_updater"
|
9
|
+
require "dependabot/nuget/requirement"
|
10
|
+
require "dependabot/nuget/version"
|
metadata
ADDED
@@ -0,0 +1,190 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dependabot-nuget
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.80.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Dependabot
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2018-12-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dependabot-core
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.80.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.80.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: byebug
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '12'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '12'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.8'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.8'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec-its
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec_junit_formatter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.4'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.4'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0.61'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0.61'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: vcr
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '4.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '4.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: webmock
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '3.4'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '3.4'
|
139
|
+
description: Automated dependency management for Ruby, JavaScript, Python, PHP, Elixir,
|
140
|
+
Rust, Java, .NET, Elm and Go
|
141
|
+
email: support@dependabot.com
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- lib/dependabot/nuget.rb
|
147
|
+
- lib/dependabot/nuget/file_fetcher.rb
|
148
|
+
- lib/dependabot/nuget/file_fetcher/import_paths_finder.rb
|
149
|
+
- lib/dependabot/nuget/file_fetcher/sln_project_paths_finder.rb
|
150
|
+
- lib/dependabot/nuget/file_parser.rb
|
151
|
+
- lib/dependabot/nuget/file_parser/packages_config_parser.rb
|
152
|
+
- lib/dependabot/nuget/file_parser/project_file_parser.rb
|
153
|
+
- lib/dependabot/nuget/file_parser/property_value_finder.rb
|
154
|
+
- lib/dependabot/nuget/file_updater.rb
|
155
|
+
- lib/dependabot/nuget/file_updater/packages_config_declaration_finder.rb
|
156
|
+
- lib/dependabot/nuget/file_updater/project_file_declaration_finder.rb
|
157
|
+
- lib/dependabot/nuget/file_updater/property_value_updater.rb
|
158
|
+
- lib/dependabot/nuget/metadata_finder.rb
|
159
|
+
- lib/dependabot/nuget/requirement.rb
|
160
|
+
- lib/dependabot/nuget/update_checker.rb
|
161
|
+
- lib/dependabot/nuget/update_checker/property_updater.rb
|
162
|
+
- lib/dependabot/nuget/update_checker/repository_finder.rb
|
163
|
+
- lib/dependabot/nuget/update_checker/requirements_updater.rb
|
164
|
+
- lib/dependabot/nuget/update_checker/version_finder.rb
|
165
|
+
- lib/dependabot/nuget/version.rb
|
166
|
+
homepage: https://github.com/dependabot/dependabot-core
|
167
|
+
licenses:
|
168
|
+
- Nonstandard
|
169
|
+
metadata: {}
|
170
|
+
post_install_message:
|
171
|
+
rdoc_options: []
|
172
|
+
require_paths:
|
173
|
+
- lib
|
174
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
+
requirements:
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 2.5.0
|
179
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
180
|
+
requirements:
|
181
|
+
- - ">="
|
182
|
+
- !ruby/object:Gem::Version
|
183
|
+
version: 2.5.0
|
184
|
+
requirements: []
|
185
|
+
rubyforge_project:
|
186
|
+
rubygems_version: 2.7.7
|
187
|
+
signing_key:
|
188
|
+
specification_version: 4
|
189
|
+
summary: ".NET (NuGet) support for dependabot-core"
|
190
|
+
test_files: []
|