dependabot-julia 0.387.0 → 0.388.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/julia/file_parser.rb +65 -15
- metadata +4 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2628b507fdc47bc850a7e6dc73e4530808e4f52639ce522da5360679f594ce70
|
|
4
|
+
data.tar.gz: 34546cecf9663484a9b3b0d01644587933eda20e6d04f5c6d19e24e37671ecd0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a6b3aaaa79728c4bafdd42c8a18aa0955325de301b7ad54811d3da1e6365e933f01002074d97bf6e63174e56ad48f9f1a68d9d9bd2104f9eb72722cd14a00ec8
|
|
7
|
+
data.tar.gz: 402220f3b7ef021f4b8d34df16814853e2194211fdeec4bf6e0d1cf54c399d2f15a86ec9f50f985fc6745936f7c2cd107661b24d4dcdef4fff0cfdb0ecbd62ab
|
|
@@ -105,9 +105,36 @@ module Dependabot
|
|
|
105
105
|
def project_file_dependencies
|
|
106
106
|
dependencies_map = T.let({}, T::Hash[String, Dependabot::Dependency])
|
|
107
107
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
parsed_projects = all_project_files.filter_map do |proj_file|
|
|
109
|
+
result = parse_project_file(proj_file)
|
|
110
|
+
[proj_file, result] if result
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
# Packages that are themselves workspace projects (the root package or
|
|
114
|
+
# a sibling member) resolve by path within the workspace, never from a
|
|
115
|
+
# registry, so they must not be treated as updatable dependencies.
|
|
116
|
+
workspace_package_uuids = parsed_projects.filter_map do |_, result|
|
|
117
|
+
T.cast(result["uuid"], T.nilable(String))
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
parsed_projects.each do |proj_file, result|
|
|
121
|
+
parsed_deps = T.cast(result["dependencies"] || [], T::Array[T.untyped])
|
|
122
|
+
merge_dependencies_from_list(
|
|
123
|
+
parsed_deps,
|
|
124
|
+
["deps"],
|
|
125
|
+
proj_file.name,
|
|
126
|
+
dependencies_map,
|
|
127
|
+
workspace_package_uuids
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
parsed_weak_deps = T.cast(result["weak_dependencies"] || [], T::Array[T.untyped])
|
|
131
|
+
merge_dependencies_from_list(
|
|
132
|
+
parsed_weak_deps,
|
|
133
|
+
["weakdeps"],
|
|
134
|
+
proj_file.name,
|
|
135
|
+
dependencies_map,
|
|
136
|
+
workspace_package_uuids
|
|
137
|
+
)
|
|
111
138
|
end
|
|
112
139
|
|
|
113
140
|
apply_manifest_versions(dependencies_map)
|
|
@@ -181,8 +208,8 @@ module Dependabot
|
|
|
181
208
|
end
|
|
182
209
|
end
|
|
183
210
|
|
|
184
|
-
sig { params(proj_file: Dependabot::DependencyFile
|
|
185
|
-
def
|
|
211
|
+
sig { params(proj_file: Dependabot::DependencyFile).returns(T.nilable(T::Hash[String, T.untyped])) }
|
|
212
|
+
def parse_project_file(proj_file)
|
|
186
213
|
temp_dir = Dir.mktmpdir("julia_project")
|
|
187
214
|
# File names like "../Project.toml" (a workspace root fetched from a
|
|
188
215
|
# member directory) must not escape the temp dir; fall back to the
|
|
@@ -197,15 +224,9 @@ module Dependabot
|
|
|
197
224
|
begin
|
|
198
225
|
result = registry_client.parse_project(project_path: project_path)
|
|
199
226
|
|
|
200
|
-
return if result["error"]
|
|
227
|
+
return nil if result["error"]
|
|
201
228
|
|
|
202
|
-
|
|
203
|
-
parsed_deps = T.cast(result["dependencies"] || [], T::Array[T.untyped])
|
|
204
|
-
merge_dependencies_from_list(parsed_deps, ["deps"], proj_file.name, dependencies_map)
|
|
205
|
-
|
|
206
|
-
# Process weak dependencies
|
|
207
|
-
parsed_weak_deps = T.cast(result["weak_dependencies"] || [], T::Array[T.untyped])
|
|
208
|
-
merge_dependencies_from_list(parsed_weak_deps, ["weakdeps"], proj_file.name, dependencies_map)
|
|
229
|
+
result
|
|
209
230
|
ensure
|
|
210
231
|
FileUtils.rm_rf(temp_dir)
|
|
211
232
|
end
|
|
@@ -216,10 +237,11 @@ module Dependabot
|
|
|
216
237
|
dep_list: T::Array[T.untyped],
|
|
217
238
|
groups: T::Array[String],
|
|
218
239
|
file_name: String,
|
|
219
|
-
dependencies_map: T::Hash[String, Dependabot::Dependency]
|
|
240
|
+
dependencies_map: T::Hash[String, Dependabot::Dependency],
|
|
241
|
+
workspace_package_uuids: T::Array[String]
|
|
220
242
|
).void
|
|
221
243
|
end
|
|
222
|
-
def merge_dependencies_from_list(dep_list, groups, file_name, dependencies_map)
|
|
244
|
+
def merge_dependencies_from_list(dep_list, groups, file_name, dependencies_map, workspace_package_uuids)
|
|
223
245
|
dep_list.each do |dep_info|
|
|
224
246
|
dep_hash = T.cast(dep_info, T::Hash[String, T.untyped])
|
|
225
247
|
name = T.cast(dep_hash["name"], String)
|
|
@@ -228,6 +250,8 @@ module Dependabot
|
|
|
228
250
|
uuid = T.cast(dep_hash["uuid"], T.nilable(String))
|
|
229
251
|
requirement_string = T.cast(dep_hash["requirement"], T.nilable(String))
|
|
230
252
|
|
|
253
|
+
next if skip_dependency?(uuid, requirement_string, file_name, workspace_package_uuids)
|
|
254
|
+
|
|
231
255
|
new_requirement = {
|
|
232
256
|
requirement: requirement_string,
|
|
233
257
|
file: file_name,
|
|
@@ -287,6 +311,32 @@ module Dependabot
|
|
|
287
311
|
dependency_files.select { |f| f.name.match?(/Project\.toml$/i) }
|
|
288
312
|
end
|
|
289
313
|
|
|
314
|
+
sig do
|
|
315
|
+
params(
|
|
316
|
+
uuid: T.nilable(String),
|
|
317
|
+
requirement_string: T.nilable(String),
|
|
318
|
+
file_name: String,
|
|
319
|
+
workspace_package_uuids: T::Array[String]
|
|
320
|
+
).returns(T::Boolean)
|
|
321
|
+
end
|
|
322
|
+
def skip_dependency?(uuid, requirement_string, file_name, workspace_package_uuids)
|
|
323
|
+
return true if uuid && workspace_package_uuids.include?(uuid)
|
|
324
|
+
|
|
325
|
+
# A dep with no compat entry in a workspace member file (test/,
|
|
326
|
+
# docs/, ...) must not get one synthesized: Julia convention
|
|
327
|
+
# (CompatHelper) only adds compat bounds to the package's own
|
|
328
|
+
# Project.toml. Existing member compat entries are still updated.
|
|
329
|
+
requirement_string.nil? && workspace_member_file?(file_name)
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
# Anything outside the target directory ("test/Project.toml", or
|
|
333
|
+
# "../Project.toml" when Dependabot targets a member directory) was
|
|
334
|
+
# discovered via workspace membership rather than requested directly.
|
|
335
|
+
sig { params(file_name: String).returns(T::Boolean) }
|
|
336
|
+
def workspace_member_file?(file_name)
|
|
337
|
+
file_name.include?("/")
|
|
338
|
+
end
|
|
339
|
+
|
|
290
340
|
sig { returns(T.nilable(Dependabot::DependencyFile)) }
|
|
291
341
|
def project_file
|
|
292
342
|
@project_file ||= T.let(
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: dependabot-julia
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.388.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.388.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.388.0
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: debug
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -261,7 +261,7 @@ licenses:
|
|
|
261
261
|
- MIT
|
|
262
262
|
metadata:
|
|
263
263
|
bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
|
|
264
|
-
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.
|
|
264
|
+
changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.388.0
|
|
265
265
|
rdoc_options: []
|
|
266
266
|
require_paths:
|
|
267
267
|
- lib
|