bibliothecary 6.3.0 → 6.3.1
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/.ruby-version +1 -0
- data/.travis.yml +1 -1
- data/README.md +0 -3
- data/bibliothecary.gemspec +3 -1
- data/lib/bibliothecary/analyser.rb +55 -3
- data/lib/bibliothecary/parsers/cocoapods.rb +4 -2
- data/lib/bibliothecary/parsers/julia.rb +20 -7
- data/lib/bibliothecary/parsers/pypi.rb +4 -2
- data/lib/bibliothecary/parsers/rubygems.rb +2 -1
- data/lib/bibliothecary/version.rb +1 -1
- metadata +34 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ba88fac4e7fbc938bf270504f1b41787f314105f237bb1e4e080e5ad82379aef
|
4
|
+
data.tar.gz: 28de14e318ae6684074ac38e8a7b2f1fb57fa83d21a97e7908d6afe110bb5d22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a07ec3aeb787fe83e7a4d415f83b5aeefe1649eb590a320a48a90053b26b5bf215e6649799bc5792e9e20e5e6fc920bddd0f43c3e8f08111d34baf2695f64ed9
|
7
|
+
data.tar.gz: 3da7fe10d6c6e036091a82e84a1cbfa80ef9ee58f37289629fe8076b1c49da38a7dc40d03dfe7b56b3e1a12327dc714bf220576a2ca6b072ab66a7934bf06c0d
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.1
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -3,9 +3,6 @@
|
|
3
3
|
Dependency manifest parsing library for https://libraries.io
|
4
4
|
|
5
5
|
[](https://travis-ci.org/librariesio/bibliothecary)
|
6
|
-
[](https://codeclimate.com/github/librariesio/bibliothecary)
|
7
|
-
[](https://codeclimate.com/github/librariesio/bibliothecary)
|
8
|
-
[](https://codeclimate.com/github/librariesio/bibliothecary/issues)
|
9
6
|
[](https://github.com/librariesio/bibliothecary/blob/master/LICENSE.txt)
|
10
7
|
|
11
8
|
## Installation
|
data/bibliothecary.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency "toml-rb", "~> 1.0"
|
22
22
|
spec.add_dependency "librariesio-gem-parser"
|
23
|
-
spec.add_dependency "ox"
|
23
|
+
spec.add_dependency "ox", ">= 2.8.1"
|
24
24
|
spec.add_dependency "typhoeus"
|
25
25
|
spec.add_dependency "deb_control"
|
26
26
|
spec.add_dependency "sdl4r"
|
@@ -29,4 +29,6 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency "bundler", "~> 1.11"
|
30
30
|
spec.add_development_dependency "rake", "~> 12.0"
|
31
31
|
spec.add_development_dependency "rspec", "~> 3.0"
|
32
|
+
spec.add_development_dependency "webmock"
|
33
|
+
spec.add_development_dependency "vcr"
|
32
34
|
end
|
@@ -41,13 +41,56 @@ module Bibliothecary
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
+
def set_related_paths_field(by_dirname_dest, by_dirname_source)
|
45
|
+
by_dirname_dest.each do |dirname, analyses|
|
46
|
+
analyses.each do |analysis|
|
47
|
+
source_analyses = by_dirname_source[dirname].map { |source_analysis| source_analysis[:path] }
|
48
|
+
analysis[:related_paths] = source_analyses.sort
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def add_related_paths(analyses)
|
54
|
+
analyses.each do |analysis|
|
55
|
+
analysis[:related_paths] = []
|
56
|
+
end
|
57
|
+
|
58
|
+
# associate manifests and lockfiles in the same directory;
|
59
|
+
|
60
|
+
# note that right now we're in the context of a single
|
61
|
+
# package manager, so manifest and lockfile in the
|
62
|
+
# same directory is considered proof that they are
|
63
|
+
# matched.
|
64
|
+
|
65
|
+
by_dirname = {
|
66
|
+
"manifest" => Hash.new { |h, k| h[k] = [] },
|
67
|
+
"lockfile" => Hash.new { |h, k| h[k] = [] }
|
68
|
+
}
|
69
|
+
|
70
|
+
analyses.each do |analysis|
|
71
|
+
dirname = File.dirname(analysis[:path])
|
72
|
+
by_dirname[analysis[:kind]][dirname].push(analysis)
|
73
|
+
end
|
74
|
+
|
75
|
+
by_dirname["manifest"].each do |_, manifests|
|
76
|
+
manifests.delete_if { |manifest| !determine_can_have_lockfile(manifest[:path]) }
|
77
|
+
end
|
78
|
+
|
79
|
+
set_related_paths_field(by_dirname["manifest"], by_dirname["lockfile"])
|
80
|
+
set_related_paths_field(by_dirname["lockfile"], by_dirname["manifest"])
|
81
|
+
end
|
82
|
+
|
44
83
|
def analyse(folder_path, file_list)
|
45
|
-
file_list.map do |path|
|
84
|
+
analyses = file_list.map do |path|
|
46
85
|
filename = path.gsub(folder_path, '').gsub(/^\//, '')
|
47
86
|
next unless match?(filename)
|
48
87
|
contents = File.open(path).read
|
49
88
|
analyse_contents(filename, contents)
|
50
89
|
end.compact
|
90
|
+
|
91
|
+
add_related_paths(analyses)
|
92
|
+
|
93
|
+
analyses
|
51
94
|
end
|
52
95
|
|
53
96
|
def analyse_contents(filename, contents)
|
@@ -60,8 +103,8 @@ module Bibliothecary
|
|
60
103
|
kind: determine_kind(filename)
|
61
104
|
}
|
62
105
|
end
|
63
|
-
rescue
|
64
|
-
|
106
|
+
# rescue
|
107
|
+
# nil
|
65
108
|
end
|
66
109
|
|
67
110
|
def determine_kind(filename)
|
@@ -73,6 +116,15 @@ module Bibliothecary
|
|
73
116
|
return []
|
74
117
|
end
|
75
118
|
|
119
|
+
def determine_can_have_lockfile(filename)
|
120
|
+
mapping.each do |regex, details|
|
121
|
+
if filename.match(regex)
|
122
|
+
return details.fetch(:can_have_lockfile, true)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
return true
|
126
|
+
end
|
127
|
+
|
76
128
|
def parse_ruby_manifest(manifest)
|
77
129
|
manifest.dependencies.inject([]) do |deps, dep|
|
78
130
|
deps.push({
|
@@ -17,7 +17,8 @@ module Bibliothecary
|
|
17
17
|
},
|
18
18
|
/(^[A-Za-z0-9_-]+\.podspec$|.*\/[A-Za-z0-9_-]+\.podspec$)/ => {
|
19
19
|
kind: 'manifest',
|
20
|
-
parser: :parse_podspec
|
20
|
+
parser: :parse_podspec,
|
21
|
+
can_have_lockfile: false
|
21
22
|
},
|
22
23
|
/(^Podfile\.lock$|.*\/Podfile\.lock$)/ => {
|
23
24
|
kind: 'lockfile',
|
@@ -25,7 +26,8 @@ module Bibliothecary
|
|
25
26
|
},
|
26
27
|
/(^[A-Za-z0-9_-]+\.podspec.json$|.*\/[A-Za-z0-9_-]+\.podspec.json$)/ => {
|
27
28
|
kind: 'manifest',
|
28
|
-
parser: :parse_json_manifest
|
29
|
+
parser: :parse_json_manifest,
|
30
|
+
can_have_lockfile: false
|
29
31
|
}
|
30
32
|
}
|
31
33
|
end
|
@@ -6,21 +6,34 @@ module Bibliothecary
|
|
6
6
|
def self.mapping
|
7
7
|
{
|
8
8
|
/^REQUIRE$|.*\/REQUIRE$/i => {
|
9
|
-
kind:
|
9
|
+
kind: "manifest",
|
10
10
|
parser: :parse_require
|
11
11
|
}
|
12
12
|
}
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.parse_require(manifest)
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
16
|
+
deps = []
|
17
|
+
manifest.split("\n").each do |line|
|
18
|
+
next if line.match(/^#/) || line.empty?
|
19
|
+
split = line.split(/\s/)
|
20
|
+
if line.match(/^@/)
|
21
|
+
name = split[1]
|
22
|
+
reqs = split[2, split.length].join(" ")
|
23
|
+
else
|
24
|
+
name = split[0]
|
25
|
+
reqs = split[1, split.length].join(" ")
|
26
|
+
end
|
27
|
+
reqs = "*" if reqs.empty?
|
28
|
+
next if name.empty?
|
29
|
+
|
30
|
+
deps << {
|
31
|
+
name: name,
|
32
|
+
requirement: reqs,
|
33
|
+
type: "runtime"
|
22
34
|
}
|
23
35
|
end
|
36
|
+
deps
|
24
37
|
end
|
25
38
|
end
|
26
39
|
end
|
@@ -11,11 +11,13 @@ module Bibliothecary
|
|
11
11
|
{
|
12
12
|
/.*require[^\/]*(\/)?[^\/]*\.(txt|pip)$/ => {
|
13
13
|
kind: 'manifest',
|
14
|
-
parser: :parse_requirements_txt
|
14
|
+
parser: :parse_requirements_txt,
|
15
|
+
can_have_lockfile: false
|
15
16
|
},
|
16
17
|
/^setup\.py$|.*\/setup.py$/ => {
|
17
18
|
kind: 'manifest',
|
18
|
-
parser: :parse_setup_py
|
19
|
+
parser: :parse_setup_py,
|
20
|
+
can_have_lockfile: false
|
19
21
|
},
|
20
22
|
/^Pipfile$|.*\/Pipfile$/ => {
|
21
23
|
kind: 'manifest',
|
@@ -16,7 +16,8 @@ module Bibliothecary
|
|
16
16
|
},
|
17
17
|
/^[A-Za-z0-9_-]+\.gemspec$|.*\/[A-Za-z0-9_-]+\.gemspec$/ => {
|
18
18
|
kind: 'manifest',
|
19
|
-
parser: :parse_gemspec
|
19
|
+
parser: :parse_gemspec,
|
20
|
+
can_have_lockfile: false
|
20
21
|
},
|
21
22
|
/^Gemfile\.lock$|^gems\.locked$|.*\/gems\.locked$|.*\/Gemfile\.lock$/ => {
|
22
23
|
kind: 'lockfile',
|
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.3.
|
4
|
+
version: 6.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Nesbitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: toml-rb
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.8.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.8.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: typhoeus
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +150,34 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '3.0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: webmock
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: vcr
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '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'
|
153
181
|
description:
|
154
182
|
email:
|
155
183
|
- andrewnez@gmail.com
|
@@ -168,6 +196,7 @@ files:
|
|
168
196
|
- ".gitignore"
|
169
197
|
- ".rspec"
|
170
198
|
- ".rubocop.yml"
|
199
|
+
- ".ruby-version"
|
171
200
|
- ".travis.yml"
|
172
201
|
- CODE_OF_CONDUCT.md
|
173
202
|
- Gemfile
|
@@ -229,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
229
258
|
version: '0'
|
230
259
|
requirements: []
|
231
260
|
rubyforge_project:
|
232
|
-
rubygems_version: 2.7.
|
261
|
+
rubygems_version: 2.7.6
|
233
262
|
signing_key:
|
234
263
|
specification_version: 4
|
235
264
|
summary: Find and parse manifests
|