dependabot-dotnet_sdk 0.284.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 15a706a053292404193686a020b0b1adbbd7b1b64224227e540ba4f7e6a59a0c
4
+ data.tar.gz: e08698fe639234d590f38efe79ade970060d04b5900364a3f4f51651d454e5e0
5
+ SHA512:
6
+ metadata.gz: ed64acdf3bce66fc957374c4edc9892c34f69e291f0c3650dbe4a2edc0050c688d043af8ce8fb48d04af70adb8552d0d3c1c5d0bb5167ac71ec6a8173d566fa1
7
+ data.tar.gz: 29a61629201e766b4f744d42497305d465c98bc535c8268fd1d8e2cf5b3d0d063d17edb32a008a0ba595d597e02bc6de1391cd596083330abfb6ebc2a95a5f81
@@ -0,0 +1,46 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/file_fetchers"
5
+ require "dependabot/file_fetchers/base"
6
+ require "sorbet-runtime"
7
+
8
+ module Dependabot
9
+ module DotnetSdk
10
+ class FileFetcher < Dependabot::FileFetchers::Base
11
+ extend T::Sig
12
+
13
+ sig { override.params(filenames: T::Array[String]).returns(T::Boolean) }
14
+ def self.required_files_in?(filenames)
15
+ filenames.any? { |f| File.basename(f) == "global.json" }
16
+ end
17
+
18
+ sig { override.returns(String) }
19
+ def self.required_files_message
20
+ "Repo must contain a global.json file."
21
+ end
22
+
23
+ sig { override.returns(T::Array[Dependabot::DependencyFile]) }
24
+ def fetch_files
25
+ fetched_files = []
26
+ fetched_files << root_file
27
+
28
+ return fetched_files if fetched_files.any?
29
+
30
+ raise Dependabot::DependencyFileNotFound.new(
31
+ nil,
32
+ "global.json not found in #{directory}"
33
+ )
34
+ end
35
+
36
+ private
37
+
38
+ sig { returns(T.nilable(Dependabot::DependencyFile)) }
39
+ def root_file
40
+ fetch_file_if_present("global.json")
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ Dependabot::FileFetchers.register("dotnet_sdk", Dependabot::DotnetSdk::FileFetcher)
@@ -0,0 +1,79 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/dependency"
5
+ require "dependabot/file_parsers"
6
+ require "dependabot/file_parsers/base"
7
+ require "sorbet-runtime"
8
+
9
+ module Dependabot
10
+ module DotnetSdk
11
+ class FileParser < Dependabot::FileParsers::Base
12
+ extend T::Sig
13
+
14
+ require "dependabot/file_parsers/base/dependency_set"
15
+
16
+ sig { override.returns(T::Array[Dependabot::Dependency]) }
17
+ def parse
18
+ dependency_set = DependencySet.new
19
+
20
+ config_dependency_files.each do |config_dependency_file|
21
+ dependency = parse_dependency_file(config_dependency_file)
22
+ dependency_set << dependency if dependency
23
+ end
24
+
25
+ dependency_set.dependencies
26
+ end
27
+
28
+ private
29
+
30
+ sig { params(dependency_file: Dependabot::DependencyFile).returns(T.nilable(Dependabot::Dependency)) }
31
+ def parse_dependency_file(dependency_file)
32
+ return unless dependency_file.content
33
+
34
+ begin
35
+ contents = JSON.parse(T.must(dependency_file.content))
36
+ rescue JSON::ParserError
37
+ raise Dependabot::DependencyFileNotParseable, T.must(dependency_files.first).path
38
+ end
39
+
40
+ return unless contents["sdk"]
41
+
42
+ Dependabot::Dependency.new(
43
+ name: "dotnet-sdk",
44
+ version: contents["sdk"]["version"],
45
+ package_manager: "dotnet_sdk",
46
+ requirements: [{
47
+ file: dependency_file.name,
48
+ requirement: contents["sdk"]["version"],
49
+ groups: [],
50
+ source: nil
51
+ }],
52
+ metadata: {
53
+ allow_prerelease: contents["sdk"]["allowPrerelease"] || false,
54
+ roll_forward: contents["sdk"]["rollForward"] || "latestPatch"
55
+ }
56
+ )
57
+ end
58
+
59
+ sig { returns(T::Array[Dependabot::DependencyFile]) }
60
+ def config_dependency_files
61
+ @config_dependency_files ||= T.let(
62
+ dependency_files.select do |f|
63
+ f.name.end_with?("global.json")
64
+ end,
65
+ T.nilable(T::Array[Dependabot::DependencyFile])
66
+ )
67
+ end
68
+
69
+ sig { override.void }
70
+ def check_required_files
71
+ return if dependency_files.any?
72
+
73
+ raise "No dependency files!"
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ Dependabot::FileParsers.register("dotnet_sdk", Dependabot::DotnetSdk::FileParser)
@@ -0,0 +1,56 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/file_updaters"
5
+ require "dependabot/file_updaters/base"
6
+ require "sorbet-runtime"
7
+
8
+ module Dependabot
9
+ module DotnetSdk
10
+ class FileUpdater < Dependabot::FileUpdaters::Base
11
+ extend T::Sig
12
+
13
+ sig { override.returns(T::Array[Regexp]) }
14
+ def self.updated_files_regex
15
+ [/^global\.json$/]
16
+ end
17
+
18
+ sig { override.returns(T::Array[Dependabot::DependencyFile]) }
19
+ def updated_dependency_files
20
+ updated_files = []
21
+
22
+ contents = update
23
+
24
+ updated_files << updated_file(file: global_json, content: contents) if file_changed?(global_json)
25
+
26
+ updated_files
27
+ end
28
+
29
+ private
30
+
31
+ sig { returns(Dependabot::Dependency) }
32
+ def dependency
33
+ T.must(dependencies.first)
34
+ end
35
+
36
+ sig { override.void }
37
+ def check_required_files
38
+ return if dependency_files.any?
39
+
40
+ raise "No global.json configuration!"
41
+ end
42
+
43
+ sig { returns(Dependabot::DependencyFile) }
44
+ def global_json
45
+ T.must(dependency_files.find { |f| f.name == "global.json" })
46
+ end
47
+
48
+ sig { returns(String) }
49
+ def update
50
+ T.must(global_json.content).gsub(T.must(dependency.previous_version), T.must(dependency.version))
51
+ end
52
+ end
53
+ end
54
+ end
55
+
56
+ Dependabot::FileUpdaters.register("dotnet_sdk", Dependabot::DotnetSdk::FileUpdater)
@@ -0,0 +1,22 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/metadata_finders"
5
+ require "dependabot/metadata_finders/base"
6
+
7
+ module Dependabot
8
+ module DotnetSdk
9
+ class MetadataFinder < Dependabot::MetadataFinders::Base
10
+ extend T::Sig
11
+
12
+ private
13
+
14
+ sig { override.returns(T.nilable(Dependabot::Source)) }
15
+ def look_up_source
16
+ Source.from_url("https://github.com/dotnet/sdk")
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ Dependabot::MetadataFinders.register("dotnet_sdk", Dependabot::DotnetSdk::MetadataFinder)
@@ -0,0 +1,24 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/requirement"
5
+ require "dependabot/utils"
6
+
7
+ module Dependabot
8
+ module DotnetSdk
9
+ class Requirement < Dependabot::Requirement
10
+ AND_SEPARATOR = /(?<=[a-zA-Z0-9*])\s+(?:&+\s+)?(?!\s*[|-])/
11
+
12
+ # For consistency with other languages, we define a requirements array.
13
+ # global.json don't have an `OR` separator for requirements, so it
14
+ # always contains a single element.
15
+ sig { override.params(requirement_string: T.nilable(String)).returns(T::Array[Dependabot::Requirement]) }
16
+ def self.requirements_array(requirement_string)
17
+ [new(requirement_string)]
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ Dependabot::Utils
24
+ .register_requirement_class("dotnet_sdk", Dependabot::DotnetSdk::Requirement)
@@ -0,0 +1,140 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ require "excon"
5
+ require "sorbet-runtime"
6
+
7
+ require "dependabot/dotnet_sdk/requirement"
8
+ require "dependabot/dotnet_sdk/version"
9
+ require "dependabot/registry_client"
10
+ require "dependabot/update_checkers/base"
11
+
12
+ module Dependabot
13
+ module DotnetSdk
14
+ class UpdateChecker < Dependabot::UpdateCheckers::Base
15
+ class LatestVersionFinder
16
+ extend T::Sig
17
+
18
+ RELEASES_INDEX_URL = "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json"
19
+
20
+ sig { params(dependency: Dependabot::Dependency, ignored_versions: T::Array[String]).void }
21
+ def initialize(dependency:, ignored_versions:)
22
+ @dependency = dependency
23
+ @ignored_versions = ignored_versions
24
+ end
25
+
26
+ sig { returns(T.nilable(Dependabot::Version)) }
27
+ def latest_version
28
+ @latest_version ||= T.let(
29
+ fetch_latest_version,
30
+ T.nilable(Dependabot::Version)
31
+ )
32
+ end
33
+
34
+ private
35
+
36
+ sig { returns(Dependabot::Dependency) }
37
+ attr_reader :dependency
38
+
39
+ sig { returns(T::Array[String]) }
40
+ attr_reader :ignored_versions
41
+
42
+ sig { returns(T.nilable(Dependabot::Version)) }
43
+ def fetch_latest_version
44
+ versions = available_versions
45
+ versions = filter_prerelease_versions(versions)
46
+ versions = filter_ignored_versions(versions)
47
+ versions.max
48
+ end
49
+
50
+ sig { returns(T::Array[Dependabot::Version]) }
51
+ def available_versions
52
+ releases.map { |v| version_class.new(v) }
53
+ end
54
+
55
+ sig { params(versions: T::Array[Dependabot::Version]).returns(T::Array[Dependabot::Version]) }
56
+ def filter_prerelease_versions(versions)
57
+ return versions if wants_prerelease?
58
+
59
+ # This isn't entirely accurate. .NET considers release candidates to NOT be pre-releases.
60
+ # However, we want to be conservative.
61
+ # See https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
62
+ versions.reject(&:prerelease?)
63
+ end
64
+
65
+ sig { params(versions: T::Array[Dependabot::Version]).returns(T::Array[Dependabot::Version]) }
66
+ def filter_ignored_versions(versions)
67
+ versions.reject do |version|
68
+ ignore_requirements.any? { |r| r.satisfied_by?(version) }
69
+ end
70
+ end
71
+
72
+ sig { returns(T::Array[String]) }
73
+ def releases
74
+ response = releases_response
75
+ return [] unless response.status == 200
76
+
77
+ parsed = JSON.parse(response.body)
78
+ parsed["releases-index"].flat_map do |release|
79
+ release_channel(release["releases.json"])
80
+ end
81
+ end
82
+
83
+ sig { returns(Excon::Response) }
84
+ def releases_response
85
+ Dependabot::RegistryClient.get(
86
+ url: RELEASES_INDEX_URL,
87
+ headers: { "Accept" => "application/json" }
88
+ )
89
+ end
90
+
91
+ sig { params(url: String).returns(T::Array[String]) }
92
+ def release_channel(url)
93
+ response = release_channel_response(url)
94
+ begin
95
+ parsed = JSON.parse(T.must(response).body)
96
+ rescue JSON::ParserError
97
+ raise Dependabot::DependencyFileNotResolvable, "Invalid JSON response from #{url}"
98
+ end
99
+
100
+ parsed["releases"].map do |release|
101
+ if release["sdks"].nil?
102
+ release["sdk"]["version"]
103
+ else
104
+ release["sdks"].flat_map { |sdk| sdk["version"] }
105
+ end
106
+ end
107
+ .flatten
108
+ end
109
+
110
+ sig { params(url: String).returns(T.nilable(Excon::Response)) }
111
+ def release_channel_response(url)
112
+ Dependabot::RegistryClient.get(
113
+ url: url,
114
+ headers: { "Accept" => "application/json" }
115
+ )
116
+ end
117
+
118
+ sig { returns(T::Boolean) }
119
+ def wants_prerelease?
120
+ dependency.metadata[:allow_prerelease]
121
+ end
122
+
123
+ sig { returns(T::Array[Dependabot::Requirement]) }
124
+ def ignore_requirements
125
+ ignored_versions.flat_map { |req| requirement_class.requirements_array(req) }
126
+ end
127
+
128
+ sig { returns(T.class_of(Dependabot::Version)) }
129
+ def version_class
130
+ dependency.version_class
131
+ end
132
+
133
+ sig { returns(T.class_of(Dependabot::Requirement)) }
134
+ def requirement_class
135
+ dependency.requirement_class
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,67 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "sorbet-runtime"
5
+
6
+ require "dependabot/errors"
7
+ require "dependabot/update_checkers"
8
+ require "dependabot/update_checkers/base"
9
+
10
+ module Dependabot
11
+ module DotnetSdk
12
+ class UpdateChecker < Dependabot::UpdateCheckers::Base
13
+ extend T::Sig
14
+
15
+ require_relative "update_checker/latest_version_finder"
16
+
17
+ sig { override.returns(T.nilable(T.any(String, Gem::Version))) }
18
+ def latest_version
19
+ latest_version_finder.latest_version
20
+ end
21
+
22
+ sig { override.returns(T.nilable(T.any(String, Gem::Version))) }
23
+ def latest_resolvable_version
24
+ latest_version
25
+ end
26
+
27
+ sig { override.returns(T.nilable(Dependabot::Version)) }
28
+ def latest_resolvable_version_with_no_unlock
29
+ raise NotImplementedError
30
+ end
31
+
32
+ sig { override.returns(T::Array[T::Hash[Symbol, T.untyped]]) }
33
+ def updated_requirements
34
+ dependency.requirements.map do |requirement|
35
+ {
36
+ file: requirement[:file],
37
+ requirement: latest_version,
38
+ groups: requirement[:groups],
39
+ source: requirement[:source]
40
+ }
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ sig { override.returns(T::Boolean) }
47
+ def latest_version_resolvable_with_full_unlock?
48
+ false
49
+ end
50
+
51
+ sig { override.returns(T::Array[Dependabot::Dependency]) }
52
+ def updated_dependencies_after_full_unlock
53
+ raise NotImplementedError
54
+ end
55
+
56
+ sig { returns(LatestVersionFinder) }
57
+ def latest_version_finder
58
+ @latest_version_finder ||= T.let(
59
+ LatestVersionFinder.new(dependency: dependency, ignored_versions: ignored_versions),
60
+ T.nilable(LatestVersionFinder)
61
+ )
62
+ end
63
+ end
64
+ end
65
+ end
66
+
67
+ Dependabot::UpdateCheckers.register("dotnet_sdk", Dependabot::DotnetSdk::UpdateChecker)
@@ -0,0 +1,18 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ require "dependabot/version"
5
+ require "dependabot/utils"
6
+
7
+ module Dependabot
8
+ module DotnetSdk
9
+ # The .NET SDK versioning scheme is not semver compliant.
10
+ # However, for simpliticy, we will treat it as semver.
11
+ # See: https://learn.microsoft.com/en-us/dotnet/core/versions/#versioning-details
12
+ class Version < Dependabot::Version
13
+ end
14
+ end
15
+ end
16
+
17
+ Dependabot::Utils
18
+ .register_version_class("dotnet_sdk", Dependabot::DotnetSdk::Version)
@@ -0,0 +1,20 @@
1
+ # typed: strong
2
+ # frozen_string_literal: true
3
+
4
+ # These all need to be required so the various classes can be registered in a
5
+ # lookup table of package manager names to concrete classes.
6
+ require "dependabot/dotnet_sdk/file_fetcher"
7
+ require "dependabot/dotnet_sdk/file_parser"
8
+ require "dependabot/dotnet_sdk/update_checker"
9
+ require "dependabot/dotnet_sdk/file_updater"
10
+ require "dependabot/dotnet_sdk/metadata_finder"
11
+ require "dependabot/dotnet_sdk/requirement"
12
+ require "dependabot/dotnet_sdk/version"
13
+
14
+ require "dependabot/pull_request_creator/labeler"
15
+ Dependabot::PullRequestCreator::Labeler
16
+ .register_label_details("dotnet_sdk", name: "dotnet_sdk_package_manager", colour: "512BD4")
17
+
18
+ require "dependabot/dependency"
19
+ Dependabot::Dependency
20
+ .register_production_check("dotnet_sdk", ->(_) { true })
metadata ADDED
@@ -0,0 +1,278 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dependabot-dotnet_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.284.0
5
+ platform: ruby
6
+ authors:
7
+ - Dependabot
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-11-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: dependabot-common
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.284.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.284.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: debug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.9.2
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.9.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: gpgme
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '13'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '13'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.12'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.12'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-its
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-sorbet
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 1.9.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 1.9.2
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 1.67.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 1.67.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-performance
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 1.22.1
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 1.22.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 2.29.1
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 2.29.1
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-sorbet
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: 0.8.5
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: 0.8.5
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.22.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.22.0
181
+ - !ruby/object:Gem::Dependency
182
+ name: turbo_tests
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - "~>"
186
+ - !ruby/object:Gem::Version
187
+ version: 2.2.0
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - "~>"
193
+ - !ruby/object:Gem::Version
194
+ version: 2.2.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: vcr
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '6.1'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "~>"
207
+ - !ruby/object:Gem::Version
208
+ version: '6.1'
209
+ - !ruby/object:Gem::Dependency
210
+ name: webmock
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '3.18'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '3.18'
223
+ - !ruby/object:Gem::Dependency
224
+ name: webrick
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ version: '1.7'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ">="
235
+ - !ruby/object:Gem::Version
236
+ version: '1.7'
237
+ description: dependabot-dotnet_sdk provides support for managing .NET SDK versioning
238
+ via Dependabot.
239
+ email: opensource@github.com
240
+ executables: []
241
+ extensions: []
242
+ extra_rdoc_files: []
243
+ files:
244
+ - lib/dependabot/dotnet_sdk.rb
245
+ - lib/dependabot/dotnet_sdk/file_fetcher.rb
246
+ - lib/dependabot/dotnet_sdk/file_parser.rb
247
+ - lib/dependabot/dotnet_sdk/file_updater.rb
248
+ - lib/dependabot/dotnet_sdk/metadata_finder.rb
249
+ - lib/dependabot/dotnet_sdk/requirement.rb
250
+ - lib/dependabot/dotnet_sdk/update_checker.rb
251
+ - lib/dependabot/dotnet_sdk/update_checker/latest_version_finder.rb
252
+ - lib/dependabot/dotnet_sdk/version.rb
253
+ homepage: https://github.com/dependabot/dependabot-core
254
+ licenses:
255
+ - MIT
256
+ metadata:
257
+ bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
258
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.284.0
259
+ post_install_message:
260
+ rdoc_options: []
261
+ require_paths:
262
+ - lib
263
+ required_ruby_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ version: 3.1.0
268
+ required_rubygems_version: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: 3.1.0
273
+ requirements: []
274
+ rubygems_version: 3.5.9
275
+ signing_key:
276
+ specification_version: 4
277
+ summary: Provides Dependabot support for .NET SDK
278
+ test_files: []