bibliothecary 6.8.8 → 6.8.9
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/bibliothecary/parsers/maven.rb +116 -0
- data/lib/bibliothecary/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c655fc14eb58f419b202c25b3b28d22f041c840ceda3d527aaf21b122d5663fe
|
|
4
|
+
data.tar.gz: 43b452b2ec6411d409aff5a479fd3d89d2bdf7eeb253b253b5a76849b8990b1a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 921763c07b4ae50a14a905e5eed87a558631495500150ac732763a9456b081007b6e05dac4eabfec13f06ed3d3a6b38cdc30436e828204f389a627ab64fbc38b
|
|
7
|
+
data.tar.gz: daf4e977c0c46daec88c6e9cfc0dd41b0e4ce842266716bb40aa3da10effcd5d5ee291ca034f1509f8e0233bd4a6e08ed6ab00896f7cfe4dd66ca5bbe2a859d3
|
|
@@ -15,6 +15,21 @@ module Bibliothecary
|
|
|
15
15
|
MAVEN_PROPERTY_REGEX = /\$\{(.+?)\}/
|
|
16
16
|
MAX_DEPTH = 5
|
|
17
17
|
|
|
18
|
+
# e.g. "[info] test:"
|
|
19
|
+
SBT_TYPE_REGEX = /^\[info\]\s+([-\w]+):$/
|
|
20
|
+
|
|
21
|
+
# e.g. "[info] org.typelevel:spire-util_2.12"
|
|
22
|
+
SBT_DEP_REGEX = /^\[info\]\s+(.+)$/
|
|
23
|
+
|
|
24
|
+
# e.g. "[info] - 1.7.5"
|
|
25
|
+
SBT_VERSION_REGEX = /^\[info\]\s+-\s+(.+)$/
|
|
26
|
+
|
|
27
|
+
# e.g. "[info] homepage: http://www.slf4j.org"
|
|
28
|
+
SBT_FIELD_REGEX = /^\[info\]\s+([^:]+):\s+(.+)$/
|
|
29
|
+
|
|
30
|
+
# e.g. "[info] "
|
|
31
|
+
SBT_IGNORE_REGEX = /^\[info\]\s*$/
|
|
32
|
+
|
|
18
33
|
def self.mapping
|
|
19
34
|
{
|
|
20
35
|
match_filename("ivy.xml", case_insensitive: true) => {
|
|
@@ -41,6 +56,10 @@ module Bibliothecary
|
|
|
41
56
|
match_filename("maven-resolved-dependencies.txt", case_insensitive: true) => {
|
|
42
57
|
kind: 'lockfile',
|
|
43
58
|
parser: :parse_maven_resolved
|
|
59
|
+
},
|
|
60
|
+
match_filename("sbt-update-full.txt", case_insensitive: true) => {
|
|
61
|
+
kind: 'lockfile',
|
|
62
|
+
parser: :parse_sbt_update_full
|
|
44
63
|
}
|
|
45
64
|
}
|
|
46
65
|
end
|
|
@@ -227,6 +246,103 @@ module Bibliothecary
|
|
|
227
246
|
xml.locate("parent/#{non_prop_name}").first.nodes.first
|
|
228
247
|
end
|
|
229
248
|
end
|
|
249
|
+
|
|
250
|
+
def self.parse_sbt_update_full(file_contents)
|
|
251
|
+
all_deps = []
|
|
252
|
+
type = nil
|
|
253
|
+
lines = file_contents.split("\n")
|
|
254
|
+
while lines.any?
|
|
255
|
+
line = lines.shift
|
|
256
|
+
|
|
257
|
+
type_match = SBT_TYPE_REGEX.match(line)
|
|
258
|
+
next unless type_match
|
|
259
|
+
type = type_match.captures[0]
|
|
260
|
+
|
|
261
|
+
deps = parse_sbt_deps(type, lines)
|
|
262
|
+
all_deps.concat(deps)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
# strip out evicted dependencies
|
|
266
|
+
all_deps.select! do |dep|
|
|
267
|
+
dep[:fields]["evicted"] != "true"
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
# in the future, we could use "callers" in the fields to
|
|
271
|
+
# decide which deps are direct root deps and which are
|
|
272
|
+
# pulled in by another dep. The direct deps have the sbt
|
|
273
|
+
# project name as a caller.
|
|
274
|
+
|
|
275
|
+
# clean out any duplicates (I'm pretty sure sbt will have done this for
|
|
276
|
+
# us so this is paranoia, basically)
|
|
277
|
+
squished = all_deps.compact.uniq {|item| [item[:name], item[:requirement], item[:type]]}
|
|
278
|
+
|
|
279
|
+
# get rid of the fields
|
|
280
|
+
squished.each do |dep|
|
|
281
|
+
dep.delete(:fields)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
return squished
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def self.parse_sbt_deps(type, lines)
|
|
288
|
+
deps = []
|
|
289
|
+
while lines.any? and not SBT_TYPE_REGEX.match(lines[0])
|
|
290
|
+
line = lines.shift
|
|
291
|
+
|
|
292
|
+
next if SBT_IGNORE_REGEX.match(line)
|
|
293
|
+
|
|
294
|
+
dep_match = SBT_DEP_REGEX.match(line)
|
|
295
|
+
if dep_match
|
|
296
|
+
versions = parse_sbt_versions(type, dep_match.captures[0], lines)
|
|
297
|
+
deps.concat(versions)
|
|
298
|
+
else
|
|
299
|
+
lines.unshift(line)
|
|
300
|
+
break
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
deps
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
def self.parse_sbt_versions(type, name, lines)
|
|
308
|
+
versions = []
|
|
309
|
+
while lines.any? and not SBT_TYPE_REGEX.match(lines[0])
|
|
310
|
+
line = lines.shift
|
|
311
|
+
|
|
312
|
+
version_match = SBT_VERSION_REGEX.match(line)
|
|
313
|
+
if version_match
|
|
314
|
+
versions.push(parse_sbt_version(type, name, version_match.captures[0], lines))
|
|
315
|
+
else
|
|
316
|
+
lines.unshift(line)
|
|
317
|
+
break
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
versions
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def self.parse_sbt_version(type, name, version, lines)
|
|
325
|
+
fields = {}
|
|
326
|
+
while lines.any? and not SBT_TYPE_REGEX.match(lines[0])
|
|
327
|
+
line = lines.shift
|
|
328
|
+
|
|
329
|
+
field_match = SBT_FIELD_REGEX.match(line)
|
|
330
|
+
if field_match
|
|
331
|
+
fields[field_match.captures[0]] = field_match.captures[1]
|
|
332
|
+
else
|
|
333
|
+
lines.unshift(line)
|
|
334
|
+
break
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
{
|
|
339
|
+
name: name,
|
|
340
|
+
requirement: version,
|
|
341
|
+
type: type,
|
|
342
|
+
# we post-process using some of these fields and then delete them again
|
|
343
|
+
fields: fields
|
|
344
|
+
}
|
|
345
|
+
end
|
|
230
346
|
end
|
|
231
347
|
end
|
|
232
348
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bibliothecary
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 6.8.
|
|
4
|
+
version: 6.8.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Nesbitt
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-06-
|
|
11
|
+
date: 2020-06-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: toml-rb
|