bindeps 0.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9d3bcdb20047a2dd41c765e8f0b11a7da907f64a
4
+ data.tar.gz: 20503629d68af6982d499746de100d8bf1872bb8
5
+ SHA512:
6
+ metadata.gz: d9517fd6405d97642b1356557ff86eb96c7f60a1cd0a1c7887cbe2e4f231ab41c72ff75a04d68c87a4c83ef61d0e73085e59182708717216227573479db28f4e
7
+ data.tar.gz: 09224feaa1faf1ed3e32039d4be1c97f6d8bb5e70235b74b09db813320323569517114585c533df96edd3e93cdcb91db1f877c047e45dd3c2ba940efd9674f6d
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0.0"
4
+ - "2.1.0"
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in bindeps.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Richard Smith-Unna
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,85 @@
1
+ # Bindeps
2
+
3
+ [![Build Status](https://travis-ci.org/Blahah/bindeps.svg)](https://travis-ci.org/Blahah/bindeps)
4
+ [![Dependency Status](http://img.shields.io/gemnasium/Blahah/bindeps.svg)](https://gemnasium.com/Blahah/bindeps)
5
+ [![Coverage Status](http://img.shields.io/coveralls/Blahah/bindeps.svg)](https://coveralls.io/r/Blahah/bindeps)
6
+ [![Code Climate](http://img.shields.io/codeclimate/github/Blahah/bindeps.svg)](https://codeclimate.com/github/Blahah/bindeps)
7
+ [![Gem Version](http://img.shields.io/gem/v/bindeps.svg)](https://rubygems.org/gems/bindeps)
8
+ [![License](http://img.shields.io/:license-mit-blue.svg)](http://Blahah.mit-license.org)
9
+
10
+ Simple binary dependency management for Ruby gems
11
+
12
+ ## Installation
13
+
14
+ `gem install bindeps`
15
+
16
+ ### Using Bundler
17
+
18
+ Add this line to your application's Gemfile:
19
+
20
+ gem 'bindeps'
21
+
22
+ And then execute:
23
+
24
+ $ bundle
25
+
26
+ Or install it yourself as:
27
+
28
+ $ gem install bindeps
29
+
30
+ ## Usage
31
+
32
+ Create a YAML file describing your dependencies as a dictionary. Read the [bindeps YAML format specifications](wiki/bindeps_YAML_format_specifications).
33
+
34
+ ```yaml
35
+ blastplus:
36
+ binaries:
37
+ - makeblastdb
38
+ - blastn
39
+ - tblastn
40
+ - blastp
41
+ - blastx
42
+ version:
43
+ number: '2.2.29'
44
+ command: 'blastx -version'
45
+ url:
46
+ 64bit:
47
+ macosx: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-universal-macosx.tar.gz
48
+ linux: ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.2.29/ncbi-blast-2.2.29+-x64-linux.tar.gz
49
+ bowtie2:
50
+ binaries:
51
+ - bowtie2
52
+ - bowtie2-align-l
53
+ - bowtie2-align-s
54
+ - bowtie2-build
55
+ - bowtie2-build-l
56
+ - bowtie2-build-s
57
+ - bowtie2-inspect
58
+ - bowtie2-inspect-l
59
+ - bowtie2-inspect-s
60
+ version:
61
+ number: '2.2.3'
62
+ command: 'bowtie2 --version'
63
+ url:
64
+ 64bit:
65
+ linux: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-linux-x86_64.zip
66
+ macosx: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-macos-x86_64.zip
67
+ ```
68
+
69
+ Then as soon as your app is executed, let `bindeps` check for and install any missing dependencies.
70
+
71
+ ```ruby
72
+ require 'bindeps'
73
+
74
+ Bindeps.require 'binary_dependencies.yaml'
75
+ ```
76
+
77
+ `bindeps` will check run the `versioncmd` for each dependency. If the return value of the command doesn't match a regular expression test against the `version` field, `bindeps` will download the file that matches your system architecture, unpack it and place the binary in your path. If the return value does match, `bindeps` will do nothing.
78
+
79
+ ## Contributing
80
+
81
+ 1. Fork it
82
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
83
+ 3. Commit your changes *with tests* (`git commit -am 'Add some feature'`)
84
+ 4. Push to the branch (`git push origin my-new-feature`)
85
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'rake/testtask'
2
+
3
+ Rake::TestTask.new do |t|
4
+ t.libs << 'test'
5
+ end
6
+
7
+ desc "Run tests"
8
+ task :default => :test
data/bindeps.gemspec ADDED
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'bindeps/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "bindeps"
8
+ spec.version = Bindeps::VERSION
9
+ spec.authors = ["Richard Smith-Unna"]
10
+ spec.email = ["rds45@cam.ac.uk"]
11
+ spec.description = %q{binary dependency management for ruby gems}
12
+ spec.summary = %q{binary dependency management for ruby gems}
13
+ spec.homepage = "https://github.com/Blahah/bindeps"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "which_works"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency 'turn'
26
+ spec.add_development_dependency 'minitest'
27
+ spec.add_development_dependency 'simplecov'
28
+ spec.add_development_dependency 'shoulda-context'
29
+ spec.add_development_dependency 'coveralls', '>= 0.6.7'
30
+ end
@@ -0,0 +1,3 @@
1
+ module Bindeps
2
+ VERSION = "0.0.1"
3
+ end
data/lib/bindeps.rb ADDED
@@ -0,0 +1,145 @@
1
+ require "bindeps/version"
2
+ require "unpacker"
3
+ require "which_works"
4
+ require "tmpdir"
5
+ require "yaml"
6
+
7
+ module Bindeps
8
+
9
+ class DownloadFailedError < StandardError; end
10
+ class UnsupportedSystemError < StandardError; end
11
+
12
+ def self.require dependencies
13
+ if dependencies.is_a? String
14
+ dependencies = YAML.load_file dependencies
15
+ end
16
+ tmpdir = Dir.mktmpdir
17
+ Dir.chdir(tmpdir) do
18
+ dependencies.each_pair do |name, config|
19
+ d = Dependency.new(name,
20
+ config['binaries'],
21
+ config['version'],
22
+ config['url'])
23
+ d.install_missing
24
+ end
25
+ end
26
+ end
27
+
28
+ class Dependency
29
+
30
+ def initialize(name, binaries, versionconfig, urlconfig)
31
+ @name = name
32
+ unless binaries.is_a? Array
33
+ raise ArgumentError,
34
+ "binaries must be an array"
35
+ end
36
+ @binaries = binaries
37
+ @version = versionconfig['number']
38
+ @version_cmd = versionconfig['command']
39
+ @url = choose_url urlconfig
40
+ end
41
+
42
+ def install_missing
43
+ unless all_installed?
44
+ @binaries.each do |bin|
45
+ download
46
+ unpack
47
+ return
48
+ end
49
+ end
50
+ end
51
+
52
+ def choose_url urlconfig
53
+ arch = System.arch
54
+ if urlconfig.key? arch
55
+ sys = urlconfig[arch]
56
+ os = System.os.to_s
57
+ if sys.key? os
58
+ return sys[os]
59
+ else
60
+ raise UnsupportedSystemError,
61
+ "bindeps config for #{@name} #{arch} doesn't contain an entry for #{os}"
62
+ end
63
+ else
64
+ raise UnsupportedSystemError,
65
+ "bindeps config for #{@name} doesn't contain an entry for #{arch}"
66
+ end
67
+ end
68
+
69
+ def download
70
+ `curl --silent -O -J -L #{@url}`
71
+ unless $?.to_i == 0
72
+ raise DownloadFailedError,
73
+ "download of #{@url} for #{@name} failed"
74
+ end
75
+ end
76
+
77
+ def unpack
78
+ archive = File.basename(@url)
79
+ Unpacker.unpack(archive) do |dir|
80
+ Dir.chdir dir do
81
+ Dir['*'].each do |extracted|
82
+ if @binaries.include? extracted
83
+ install extracted
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+
90
+ def all_installed?
91
+ @binaries.each do |bin|
92
+ return false unless installed? bin
93
+ end
94
+ true
95
+ end
96
+
97
+ def installed? bin
98
+ path = Which.which(bin)
99
+ if path
100
+ ret = `#{@version_cmd}`.strip
101
+ if $?.to_i == 0 && ret.equal?(@version)
102
+ return path
103
+ end
104
+ end
105
+ false
106
+ end
107
+
108
+ def install bin
109
+ bindir = File.join(ENV['GEM_HOME'], 'bin')
110
+ puts "installing #{bin} to #{bindir}"
111
+ FileUtils.cp(bin, File.join(bindir, File.basename(bin)))
112
+ end
113
+
114
+ end
115
+
116
+ class System
117
+
118
+ require 'rbconfig'
119
+
120
+ def self.os
121
+ (
122
+ host_os = RbConfig::CONFIG['host_os']
123
+ case host_os
124
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
125
+ :windows
126
+ when /darwin|mac os/
127
+ :macosx
128
+ when /linux/
129
+ :linux
130
+ when /solaris|bsd/
131
+ :unix
132
+ else
133
+ raise UnsupportedSystemError,
134
+ "can't install #{@name}, unknown os: #{host_os.inspect}"
135
+ end
136
+ )
137
+ end
138
+
139
+ def self.arch
140
+ Gem::Platform.local.cpu == 'x86_64' ? '64bit' : '32bit'
141
+ end
142
+
143
+ end
144
+
145
+ end
data/lib/unpacker.rb ADDED
@@ -0,0 +1,76 @@
1
+ # Lifted from https://github.com/underlog/unpacker with the reliance on ShellShot removed
2
+ #
3
+ # Copyright (c) 2009 Petyo Ivanov
4
+ #
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+ #
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+ #
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
24
+ require 'fileutils'
25
+ require 'tmpdir'
26
+
27
+ module Unpacker
28
+
29
+ class UnrecognizedArchiveError < StandardError; end
30
+
31
+ SUPPORTED_FILEEXTS = %w[tar rar zip gz bz tgz bgz tar]
32
+
33
+ def self.unpack(file, tmpdir = "/tmp", &block)
34
+ Dir.mktmpdir 'unpacker' do |dir|
35
+ cmd = case file
36
+ when /rar$/
37
+ "unrar x -y #{file} #{dir}"
38
+ when /(tar|tgz|tar\.gz|tar\.bz|tbz)$/
39
+ "tar xvf #{file} --directory #{dir}"
40
+ when /zip$/
41
+ "unzip #{file} -d #{dir}"
42
+ when /gz$/
43
+ "gunzip -c #{file} #{File.join(dir, "gz-contents")}"
44
+ else
45
+ raise UnrecognizedArchiveError
46
+ end
47
+ puts cmd
48
+ puts `#{cmd}`
49
+ block.call Dir.new(dir)
50
+ end
51
+ end
52
+
53
+ def self.archive?(file_name)
54
+ SUPPORTED_FILEEXTS.include? File.extname(file_name).sub('.', '')
55
+ end
56
+
57
+ def self.valid?(file_path, file_name = file_path)
58
+ cmd = case file_name
59
+ when /rar$/
60
+ "unrar t #{file_path}"
61
+ when /(tar|tar\.bz|tbz)$/
62
+ "tar tf #{file_path}"
63
+ when /zip$/
64
+ "zip -T #{file_path}"
65
+ when /gz|tgz$/
66
+ "gunzip -t #{file_path}"
67
+ else
68
+ raise UnrecognizedArchiveError
69
+ end
70
+ `#{cmd}`
71
+ true
72
+ rescue
73
+ false
74
+ end
75
+
76
+ end # module Unpacker
@@ -0,0 +1,18 @@
1
+ bowtie2:
2
+ binaries:
3
+ - bowtie2
4
+ - bowtie2-align-l
5
+ - bowtie2-align-s
6
+ - bowtie2-build
7
+ - bowtie2-build-l
8
+ - bowtie2-build-s
9
+ - bowtie2-inspect
10
+ - bowtie2-inspect-l
11
+ - bowtie2-inspect-s
12
+ version:
13
+ number: '2.2.3'
14
+ command: 'bowtie2 --version'
15
+ url:
16
+ 64bit:
17
+ linux: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-linux-x86_64.zip
18
+ macosx: http://downloads.sourceforge.net/project/bowtie-bio/bowtie2/2.2.3/bowtie2-2.2.3-macos-x86_64.zip
data/test/data/fakebin ADDED
@@ -0,0 +1,2 @@
1
+ #! /bin/sh
2
+ echo 'success'
Binary file
@@ -0,0 +1,15 @@
1
+ fakebin:
2
+ binaries:
3
+ - fakebin
4
+ version:
5
+ number: success
6
+ command: fakebin
7
+ url:
8
+ 64bit:
9
+ macosx: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
10
+ linux: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
11
+ unix: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
12
+ 32bit:
13
+ macosx: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
14
+ linux: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
15
+ unix: https://github.com/Blahah/bindeps/raw/master/test/data/fakebin.tgz
data/test/helper.rb ADDED
@@ -0,0 +1,18 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
+ SimpleCov::Formatter::HTMLFormatter,
6
+ Coveralls::SimpleCov::Formatter
7
+ ]
8
+ SimpleCov.start
9
+
10
+ require 'minitest/autorun'
11
+ begin; require 'turn/autorun'; rescue LoadError; end
12
+ require 'shoulda-context'
13
+ require 'bindeps'
14
+
15
+ Turn.config.format = :pretty
16
+ Turn.config.trace = 5
17
+
18
+ require 'yaml'
@@ -0,0 +1,31 @@
1
+ require 'helper'
2
+
3
+ class TestBinDeps < Test::Unit::TestCase
4
+
5
+ context "bindeps" do
6
+
7
+ setup do
8
+ test_dir = File.dirname(__FILE__)
9
+ data_dir = File.join(test_dir, 'data')
10
+ @test_yaml = File.join(data_dir, 'fakebin.yaml')
11
+ end
12
+
13
+ # teardown do
14
+ #
15
+ # end
16
+ #
17
+ # should "check if dependencies are installed" do
18
+ #
19
+ # end
20
+ #
21
+ # should "download and unpack dependencies" do
22
+ # end
23
+
24
+ should "identify and install missing dependencies" do
25
+ Bindeps.require @test_yaml
26
+ assert_equal 'success', `fakebin`.strip
27
+ end
28
+
29
+ end
30
+
31
+ end
metadata ADDED
@@ -0,0 +1,178 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bindeps
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Richard Smith-Unna
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-06-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: which_works
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: turn
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: shoulda-context
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 0.6.7
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 0.6.7
125
+ description: binary dependency management for ruby gems
126
+ email:
127
+ - rds45@cam.ac.uk
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".travis.yml"
134
+ - Gemfile
135
+ - LICENSE.txt
136
+ - README.md
137
+ - Rakefile
138
+ - bindeps.gemspec
139
+ - lib/bindeps.rb
140
+ - lib/bindeps/version.rb
141
+ - lib/unpacker.rb
142
+ - test/data/bowtie2_test.yaml
143
+ - test/data/fakebin
144
+ - test/data/fakebin.tgz
145
+ - test/data/fakebin.yaml
146
+ - test/helper.rb
147
+ - test/test_bindeps.rb
148
+ homepage: https://github.com/Blahah/bindeps
149
+ licenses:
150
+ - MIT
151
+ metadata: {}
152
+ post_install_message:
153
+ rdoc_options: []
154
+ require_paths:
155
+ - lib
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ required_rubygems_version: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ requirements: []
167
+ rubyforge_project:
168
+ rubygems_version: 2.3.0
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: binary dependency management for ruby gems
172
+ test_files:
173
+ - test/data/bowtie2_test.yaml
174
+ - test/data/fakebin
175
+ - test/data/fakebin.tgz
176
+ - test/data/fakebin.yaml
177
+ - test/helper.rb
178
+ - test/test_bindeps.rb