bibliothecary 0.8.0 → 0.9.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2bf997b419a25c7d6e3a2f23fd6bdd5b16c3edeb
4
- data.tar.gz: b99a4b00d12ca3c30eb82a5a0ad7df992f0f423d
3
+ metadata.gz: eddfd25683329b1ec4fab2722149b748d675665a
4
+ data.tar.gz: 926c0cd2605b2ac595806600e3041e2f487d7c0e
5
5
  SHA512:
6
- metadata.gz: b01ba6870320e12bb21b3a8a9922f0ed0bf53a2f02051593275b710890f0d976af36deac58b28696a62d3a7f4acab1b1b2d92479f97d2e2c4987175e4c1bc1c2
7
- data.tar.gz: 68e6a5101f3d5a1130717146b52f0d417a9dcbe89b11257c9b7f4778b7abe677e1e078db8fbf5843f4fb87f0ec53aecd26ac49aa3f02eea17f12a4418eafc4d7
6
+ metadata.gz: 60aa852cfd3ba7419db049a61d77a5db16776a05b31b4fbcf6376d58abc08b93d38c53047ac5517e00620aa65bdebc064a2847f57797a28544d922671ca2074c
7
+ data.tar.gz: 60f66903eea1682d1a0ad3308a3cbf251691852d8ae021d390849f6b53af0a74475b6af292d10e8ff58f56d20a01543d2232170b24929c7a51ca7e1e77e33d56
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "librariesio-gem-parser"
23
23
  spec.add_dependency "rogdl"
24
24
  spec.add_dependency "ox"
25
+ spec.add_dependency "typhoeus"
25
26
 
26
27
  spec.add_development_dependency "bundler", "~> 1.11"
27
28
  spec.add_development_dependency "rake", "~> 11.0"
@@ -1 +1,51 @@
1
- # project.clj
1
+ require 'json'
2
+ require 'typhoeus'
3
+
4
+ module Bibliothecary
5
+ module Parsers
6
+ class Clojars
7
+ PLATFORM_NAME = 'clojars'
8
+
9
+ def self.parse(filename, file_contents)
10
+ if filename.match(/^project\.clj$/)
11
+ parse_manifest(file_contents)
12
+ else
13
+ []
14
+ end
15
+ end
16
+
17
+ def self.analyse(folder_path, file_list)
18
+ [analyse_manifest(folder_path, file_list)]
19
+ end
20
+
21
+ def self.analyse_manifest(folder_path, file_list)
22
+ path = file_list.find{|path| path.gsub(folder_path, '').gsub(/^\//, '').match(/^project\.clj$/) }
23
+ return unless path
24
+
25
+ manifest = JSON.parse File.open(path).read
26
+
27
+ {
28
+ platform: PLATFORM_NAME,
29
+ path: path,
30
+ dependencies: parse_json_manifest(manifest)
31
+ }
32
+ end
33
+
34
+ def self.parse_manifest(manifest)
35
+ response = Typhoeus.post("https://clojars-json.herokuapp.com/project.clj", body: manifest)
36
+ json = JSON.parse response.body
37
+ index = json.index("dependencies")
38
+
39
+ return [] unless index;
40
+ dependencies = json[index + 1]
41
+ dependencies.map do |dependency|
42
+ {
43
+ name: dependency[0],
44
+ version: dependency[1],
45
+ type: "runtime"
46
+ }
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -68,7 +68,6 @@ module Bibliothecary
68
68
 
69
69
  def self.parse_godep_json(manifest)
70
70
  manifest.fetch('Deps',[]).map do |dependency|
71
- p dependency
72
71
  {
73
72
  name: dependency['ImportPath'],
74
73
  requirement: dependency['Rev'],
@@ -79,14 +78,12 @@ module Bibliothecary
79
78
 
80
79
  def self.parse_glide_yaml(manifest)
81
80
  manifest.fetch('import',[]).map do |dependency|
82
- p dependency
83
81
  {
84
82
  name: dependency['package'],
85
83
  requirement: dependency['version'] || '*',
86
84
  type: 'runtime'
87
85
  }
88
86
  end + manifest.fetch('devImports',[]).map do |dependency|
89
- p dependency
90
87
  {
91
88
  name: dependency['package'],
92
89
  requirement: dependency['version'] || '*',
@@ -97,7 +94,6 @@ module Bibliothecary
97
94
 
98
95
  def self.parse_glide_lockfile(manifest)
99
96
  manifest.fetch('imports',[]).map do |dependency|
100
- p dependency
101
97
  {
102
98
  name: dependency['name'],
103
99
  requirement: dependency['version'] || '*',
@@ -1,2 +1,76 @@
1
- # mix.exs
2
- # mix.lock
1
+ require 'json'
2
+
3
+ module Bibliothecary
4
+ module Parsers
5
+ class Hex
6
+ PLATFORM_NAME = 'hex'
7
+
8
+ def self.parse(filename, file_contents)
9
+ if filename.match(/^mix\.exs$/)
10
+ parse_mix(file_contents)
11
+ elsif filename.match(/^mix\.lock$/)
12
+ parse_mix_lock(file_contents)
13
+ else
14
+ []
15
+ end
16
+ end
17
+
18
+ def self.analyse(folder_path, file_list)
19
+ [analyse_mix(folder_path, file_list),
20
+ analyse_mix_lock(folder_path, file_list)]
21
+ end
22
+
23
+ def self.analyse_mix(folder_path, file_list)
24
+ path = file_list.find{|path| path.gsub(folder_path, '').gsub(/^\//, '').match(/^mix\.exs$/) }
25
+ return unless path
26
+
27
+ manifest = File.open(path).read
28
+
29
+ {
30
+ platform: PLATFORM_NAME,
31
+ path: path,
32
+ dependencies: parse_mix(manifest)
33
+ }
34
+ end
35
+
36
+ def self.analyse_mix_lock(folder_path, file_list)
37
+ path = file_list.find{|path| path.gsub(folder_path, '').gsub(/^\//, '').match(/^mix\.lock$/) }
38
+ return unless path
39
+
40
+ manifest = File.open(path).read
41
+
42
+ {
43
+ platform: PLATFORM_NAME,
44
+ path: path,
45
+ dependencies: parse_mix_lock(manifest)
46
+ }
47
+ end
48
+
49
+ def self.parse_mix(manifest)
50
+ response = Typhoeus.post("https://mix-deps-json.herokuapp.com/", body: manifest)
51
+ json = JSON.parse response.body
52
+
53
+ json.map do |name, version|
54
+ {
55
+ name: name,
56
+ version: version,
57
+ type: "runtime"
58
+ }
59
+ end
60
+ end
61
+
62
+ def self.parse_mix_lock(manifest)
63
+ response = Typhoeus.post("https://mix-deps-json.herokuapp.com/lock", body: manifest)
64
+ json = JSON.parse response.body
65
+
66
+ json.map do |name, info|
67
+ {
68
+ name: name,
69
+ version: info['version'],
70
+ type: "runtime"
71
+ }
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,3 +1,3 @@
1
1
  module Bibliothecary
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bibliothecary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Nesbitt
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: typhoeus
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement