bindeps 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/bindeps/version.rb +1 -1
- data/lib/bindeps.rb +20 -10
- data/test/data/neverinstalled.yaml +15 -0
- data/test/test_bindeps.rb +7 -11
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09a22034ecfb472bbf143443a4241f92e1bcd9a9
|
4
|
+
data.tar.gz: e867e4eaec47e2c02c26916191daef168ef2c55d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7de37d58bb9a9b14f6767a7d34ad025ecad3077269d85bd832c988345b6672e3030f6fd70219d4b411604d1ba2b27db40bc9b907c2b49668891522e9766deafb
|
7
|
+
data.tar.gz: a9f18935a0be780f5df054e5a5570a21bfe5594f724cb52ec46af27ba557f6eb17e7c241f2bf32e76f89e86542bceb8a3027eebb06a52f009a70f84789dd0ed3
|
data/lib/bindeps/version.rb
CHANGED
data/lib/bindeps.rb
CHANGED
@@ -25,6 +25,26 @@ module Bindeps
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
# Check whether all dependencies are installed. Return an array of missing
|
29
|
+
# dependencies.
|
30
|
+
def self.missing dependencies
|
31
|
+
if dependencies.is_a? String
|
32
|
+
dependencies = YAML.load_file dependencies
|
33
|
+
end
|
34
|
+
tmpdir = Dir.mktmpdir
|
35
|
+
missing = []
|
36
|
+
Dir.chdir(tmpdir) do
|
37
|
+
dependencies.each_pair do |name, config|
|
38
|
+
d = Dependency.new(name,
|
39
|
+
config['binaries'],
|
40
|
+
config['version'],
|
41
|
+
config['url'])
|
42
|
+
missing << name unless d.all_installed?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
missing
|
46
|
+
end
|
47
|
+
|
28
48
|
class Dependency
|
29
49
|
|
30
50
|
def initialize(name, binaries, versionconfig, urlconfig)
|
@@ -41,8 +61,6 @@ module Bindeps
|
|
41
61
|
|
42
62
|
def install_missing
|
43
63
|
unless all_installed?
|
44
|
-
puts "binary dependency #{@name} not installed"
|
45
|
-
puts "it will now be downloaded and installed"
|
46
64
|
download
|
47
65
|
unpack
|
48
66
|
end
|
@@ -89,7 +107,6 @@ module Bindeps
|
|
89
107
|
def all_installed?
|
90
108
|
@binaries.each do |bin|
|
91
109
|
unless installed? bin
|
92
|
-
puts "required binary #{bin} is not installed"
|
93
110
|
return false
|
94
111
|
end
|
95
112
|
end
|
@@ -102,20 +119,13 @@ module Bindeps
|
|
102
119
|
ret = `#{@version_cmd} 2>&1`.split("\n").map{ |l| l.strip }.join('|')
|
103
120
|
if ret && (/#{@version}/ =~ ret)
|
104
121
|
return path
|
105
|
-
else
|
106
|
-
puts "installed version should have been #{@version}"
|
107
|
-
puts "but it was:"
|
108
|
-
puts ret
|
109
122
|
end
|
110
|
-
else
|
111
|
-
puts "binary #{bin} is not in the PATH"
|
112
123
|
end
|
113
124
|
false
|
114
125
|
end
|
115
126
|
|
116
127
|
def install bin
|
117
128
|
bindir = File.join(ENV['GEM_HOME'], 'bin')
|
118
|
-
puts "installing #{bin} to #{bindir}"
|
119
129
|
FileUtils.cp(bin, File.join(bindir, File.basename(bin)))
|
120
130
|
end
|
121
131
|
|
@@ -0,0 +1,15 @@
|
|
1
|
+
neverinstalled:
|
2
|
+
binaries:
|
3
|
+
- neverinstalled
|
4
|
+
version:
|
5
|
+
number: 2.0.1.ERR
|
6
|
+
command: fakebin3
|
7
|
+
url:
|
8
|
+
64bit:
|
9
|
+
macosx: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
10
|
+
linux: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
11
|
+
unix: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
12
|
+
32bit:
|
13
|
+
macosx: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
14
|
+
linux: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
15
|
+
unix: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin3.tgz
|
data/test/test_bindeps.rb
CHANGED
@@ -9,23 +9,19 @@ class TestBinDeps < Test::Unit::TestCase
|
|
9
9
|
@data_dir = File.join(test_dir, 'data')
|
10
10
|
end
|
11
11
|
|
12
|
-
# teardown do
|
13
|
-
#
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# should "check if dependencies are installed" do
|
17
|
-
#
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# should "download and unpack dependencies" do
|
21
|
-
# end
|
22
|
-
|
23
12
|
should "identify and install missing dependencies" do
|
24
13
|
test_yaml = File.join(@data_dir, 'fakebin.yaml')
|
25
14
|
Bindeps.require test_yaml
|
26
15
|
assert_equal 'success', `fakebin`.strip
|
27
16
|
end
|
28
17
|
|
18
|
+
should "identify dependencies that are missing" do
|
19
|
+
test_yaml = File.join(@data_dir, 'neverinstalled.yaml')
|
20
|
+
missing = Bindeps.missing test_yaml
|
21
|
+
assert_equal 1, missing.length
|
22
|
+
assert_equal 'neverinstalled', missing.first
|
23
|
+
end
|
24
|
+
|
29
25
|
should "handle case where version is not on first line" do
|
30
26
|
test_yaml = File.join(@data_dir, 'fakebin2.yaml')
|
31
27
|
# install fakebin2
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bindeps
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Smith-Unna
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: which_works
|
@@ -149,6 +149,7 @@ files:
|
|
149
149
|
- test/data/fakebin3
|
150
150
|
- test/data/fakebin3.tgz
|
151
151
|
- test/data/fakebin3.yaml
|
152
|
+
- test/data/neverinstalled.yaml
|
152
153
|
- test/helper.rb
|
153
154
|
- test/test_bindeps.rb
|
154
155
|
homepage: https://github.com/Blahah/bindeps
|
@@ -171,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
171
172
|
version: '0'
|
172
173
|
requirements: []
|
173
174
|
rubyforge_project:
|
174
|
-
rubygems_version: 2.
|
175
|
+
rubygems_version: 2.1.4
|
175
176
|
signing_key:
|
176
177
|
specification_version: 4
|
177
178
|
summary: binary dependency management for ruby gems
|
@@ -186,6 +187,7 @@ test_files:
|
|
186
187
|
- test/data/fakebin3
|
187
188
|
- test/data/fakebin3.tgz
|
188
189
|
- test/data/fakebin3.yaml
|
190
|
+
- test/data/neverinstalled.yaml
|
189
191
|
- test/helper.rb
|
190
192
|
- test/test_bindeps.rb
|
191
193
|
has_rdoc:
|