natives 0.2.2 → 0.3.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 +8 -8
- data/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/README.md +16 -8
- data/VERSION +1 -1
- data/bin/natives +2 -1
- data/lib/natives/cli.rb +18 -1
- data/lib/natives/gemfile_viewer.rb +35 -0
- data/natives.gemspec +10 -6
- data/spec/fixtures/Gemfile.empty +2 -0
- data/spec/fixtures/Gemfile.empty.lock +8 -0
- data/spec/natives/gemfile_viewer_spec.rb +17 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjQ4ZmU0MzcyMTQyNjVjMzZmOGIxNzk3ZTU5YjcyOGU1ZTdhNGFlMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NWQ2NzcyOWM3ZjQ3ODExMzU2MzQzM2M2YzA0YWQ4MTE0Y2Q0NTYyNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NTIzNzllZWNlYzI5OGJjZTIxOTRjNjBjNmQ1YTliMjJlNjRhZjlmZDk1ZjE1
|
10
|
+
NjU5OTJmMzBlMWQ0YTJmMmM5YmExOGRkOTVjODRhNWVmNzAxYWY0OWU4MWEz
|
11
|
+
OTRhM2ExYWI4ZmNhZjJlMGRiOTA1YzgzOTVkYzI5NmI0MjAyZWE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZjNkYTFkNDU5OWU1MGQ3ZGEwZWQ0ZmNkZGM5ODJkMzQ4ODdkZjlkZDdiMzZm
|
14
|
+
YWRlOWI2MGFlMjA3MzRiNzZhOWIxNzc4MTFhYmVkYjUyOGY1OTAwZWIwZTMy
|
15
|
+
YTBkNzRmNGIxYjZiMzUzYmIwNDY5ZDkwNGE3YWE3YzUyYzYwNjk=
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
multi_json (1.8.2)
|
70
70
|
multi_xml (0.5.5)
|
71
71
|
multipart-post (1.2.0)
|
72
|
-
natives-catalog (0.3.
|
72
|
+
natives-catalog (0.3.4)
|
73
73
|
net-ssh (2.7.0)
|
74
74
|
net-ssh-gateway (1.2.0)
|
75
75
|
net-ssh (>= 2.6.5)
|
@@ -129,7 +129,7 @@ DEPENDENCIES
|
|
129
129
|
bundler
|
130
130
|
chef (>= 11.6.2)
|
131
131
|
jeweler
|
132
|
-
natives-catalog (>= 0.3.
|
132
|
+
natives-catalog (>= 0.3.4)
|
133
133
|
rdoc
|
134
134
|
rspec
|
135
135
|
simplecov
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# natives
|
2
2
|
|
3
|
-
Installs native library packages required by
|
3
|
+
Installs native library packages required by gems on your machine.
|
4
4
|
|
5
|
-
It
|
5
|
+
It lookups native packages from a [multi-platform catalog](https://github.com/teohm/natives-catalog/blob/master/catalogs/rubygems.yaml) maintained by [natives-catalog](https://github.com/teohm/natives-catalog) project.
|
6
6
|
|
7
7
|
## Install
|
8
8
|
|
@@ -10,13 +10,22 @@ It uses the [multi-platform catalog](https://github.com/teohm/natives-catalog/bl
|
|
10
10
|
gem install natives
|
11
11
|
```
|
12
12
|
|
13
|
-
##
|
14
|
-
```
|
13
|
+
## Use
|
14
|
+
```
|
15
15
|
natives install curb capybara-webkit nokogiri sqlite3
|
16
16
|
```
|
17
|
-
It will
|
17
|
+
It will lookup and install native packages (e.g. curl, qt, sqlite) required by the following gems: curb, capybara-webkit, nokogiri, sqlite3.
|
18
|
+
|
18
19
|
|
19
|
-
###
|
20
|
+
### Have a Gemfile?
|
21
|
+
If current working directory has a Gemfile, `natives install` will automatically use the gems specified in the Gemfile.
|
22
|
+
|
23
|
+
```
|
24
|
+
natives install
|
25
|
+
natives install --gemfile=path/to/Gemfile.special
|
26
|
+
```
|
27
|
+
|
28
|
+
### Switch catalog
|
20
29
|
|
21
30
|
```
|
22
31
|
natives install --catalog npm sqlite3
|
@@ -37,8 +46,7 @@ gem update natives-catalog
|
|
37
46
|
|
38
47
|
### Project-specific
|
39
48
|
|
40
|
-
It also looks for a `natives-catalog
|
41
|
-
|
49
|
+
It also looks for a `natives-catalog/` directory in current working directory, and loads any YAML catalog files in the directory.
|
42
50
|
|
43
51
|
|
44
52
|
## Contributing to natives
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/bin/natives
CHANGED
data/lib/natives/cli.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'natives/app'
|
3
|
+
require 'natives/gemfile_viewer'
|
3
4
|
|
4
5
|
module Natives
|
5
6
|
class Cli < Thor
|
@@ -7,8 +8,24 @@ module Natives
|
|
7
8
|
method_option :catalog, default: 'rubygems',
|
8
9
|
desc: 'set the catalog to be used',
|
9
10
|
aliases: '-c'
|
11
|
+
method_option :gemfile, default: 'Gemfile'
|
10
12
|
def install(*packages)
|
11
|
-
|
13
|
+
catalog = options[:catalog]
|
14
|
+
|
15
|
+
if catalog == 'rubygems' && packages.empty?
|
16
|
+
packages = packages_in_gemfile(options[:gemfile])
|
17
|
+
end
|
18
|
+
|
19
|
+
puts "Catalog: #{catalog.inspect}\nPackages:\n#{packages.inspect}\n\n"
|
20
|
+
|
21
|
+
Natives::App.new.install catalog, packages
|
12
22
|
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def packages_in_gemfile(gemfile_path)
|
27
|
+
Natives::GemfileViewer.new(gemfile_path).packages
|
28
|
+
end
|
29
|
+
|
13
30
|
end
|
14
31
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
module Natives
|
3
|
+
class GemfileViewer
|
4
|
+
def initialize(gemfile_path)
|
5
|
+
@gemfile_path = gemfile_path
|
6
|
+
end
|
7
|
+
|
8
|
+
def packages
|
9
|
+
begin
|
10
|
+
# After several trial-and-error, this works:
|
11
|
+
# 1. cd to the dir containing the gemfile
|
12
|
+
# 2. after that run bundle show
|
13
|
+
gemfile_dir = File.expand_path(File.dirname(@gemfile_path))
|
14
|
+
gemfile_name = File.basename(@gemfile_path)
|
15
|
+
output = %x{cd '#{gemfile_dir}' && BUNDLE_GEMFILE=#{gemfile_name} bundle show 2>&1}
|
16
|
+
success = ($?.exitstatus == 0)
|
17
|
+
unless success
|
18
|
+
raise "Failed to list packages in Gemfile: #{@gemfile_path.inspect}\nReason:\n#{output}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
extract_packages(output)
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def extract_packages(output)
|
27
|
+
lines = output.split("\n")
|
28
|
+
lines.shift # remove first line
|
29
|
+
lines.map do |line|
|
30
|
+
_, name, _ = line.split(" ")
|
31
|
+
name
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/natives.gemspec
CHANGED
@@ -2,15 +2,15 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: natives 0.
|
5
|
+
# stub: natives 0.3.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "natives"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.3.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.authors = ["Huiming Teo"]
|
13
|
-
s.date = "2013-11-
|
13
|
+
s.date = "2013-11-05"
|
14
14
|
s.description = "Installs native library packages required by Ruby gems on different platforms, based on the catalog maintained by natives-catalog project."
|
15
15
|
s.email = "teohuiming@gmail.com"
|
16
16
|
s.executables = ["natives"]
|
@@ -72,8 +72,12 @@ Gem::Specification.new do |s|
|
|
72
72
|
"lib/natives.rb",
|
73
73
|
"lib/natives/app.rb",
|
74
74
|
"lib/natives/cli.rb",
|
75
|
+
"lib/natives/gemfile_viewer.rb",
|
75
76
|
"natives.gemspec",
|
77
|
+
"spec/fixtures/Gemfile.empty",
|
78
|
+
"spec/fixtures/Gemfile.empty.lock",
|
76
79
|
"spec/natives/app_spec.rb",
|
80
|
+
"spec/natives/gemfile_viewer_spec.rb",
|
77
81
|
"spec/spec_helper.rb"
|
78
82
|
]
|
79
83
|
s.homepage = "http://github.com/teohm/natives"
|
@@ -87,7 +91,7 @@ Gem::Specification.new do |s|
|
|
87
91
|
|
88
92
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
89
93
|
s.add_runtime_dependency(%q<chef>, [">= 11.6.2"])
|
90
|
-
s.add_runtime_dependency(%q<natives-catalog>, [">= 0.3.
|
94
|
+
s.add_runtime_dependency(%q<natives-catalog>, [">= 0.3.4"])
|
91
95
|
s.add_runtime_dependency(%q<thor>, [">= 0"])
|
92
96
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
93
97
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
@@ -97,7 +101,7 @@ Gem::Specification.new do |s|
|
|
97
101
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
98
102
|
else
|
99
103
|
s.add_dependency(%q<chef>, [">= 11.6.2"])
|
100
|
-
s.add_dependency(%q<natives-catalog>, [">= 0.3.
|
104
|
+
s.add_dependency(%q<natives-catalog>, [">= 0.3.4"])
|
101
105
|
s.add_dependency(%q<thor>, [">= 0"])
|
102
106
|
s.add_dependency(%q<rspec>, [">= 0"])
|
103
107
|
s.add_dependency(%q<yard>, [">= 0"])
|
@@ -108,7 +112,7 @@ Gem::Specification.new do |s|
|
|
108
112
|
end
|
109
113
|
else
|
110
114
|
s.add_dependency(%q<chef>, [">= 11.6.2"])
|
111
|
-
s.add_dependency(%q<natives-catalog>, [">= 0.3.
|
115
|
+
s.add_dependency(%q<natives-catalog>, [">= 0.3.4"])
|
112
116
|
s.add_dependency(%q<thor>, [">= 0"])
|
113
117
|
s.add_dependency(%q<rspec>, [">= 0"])
|
114
118
|
s.add_dependency(%q<yard>, [">= 0"])
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'natives/gemfile_viewer'
|
3
|
+
|
4
|
+
describe Natives::GemfileViewer do
|
5
|
+
describe "#packages" do
|
6
|
+
it "list all gems specified in gemfile" do
|
7
|
+
gemfile_path = "spec/fixtures/Gemfile.empty"
|
8
|
+
gemfile = Natives::GemfileViewer.new(gemfile_path)
|
9
|
+
expect(gemfile.packages).to eq(['bundler'])
|
10
|
+
end
|
11
|
+
|
12
|
+
it "raises error when failed to list gems in gemfile" do
|
13
|
+
gemfile = Natives::GemfileViewer.new("gemfile_not_exist")
|
14
|
+
expect { gemfile.packages }.to raise_error
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: natives
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Huiming Teo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
- - ! '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: !binary |-
|
36
|
-
|
36
|
+
MC4zLjQ=
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -41,7 +41,7 @@ dependencies:
|
|
41
41
|
- - ! '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: !binary |-
|
44
|
-
|
44
|
+
MC4zLjQ=
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: thor
|
47
47
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,8 +203,12 @@ files:
|
|
203
203
|
- lib/natives.rb
|
204
204
|
- lib/natives/app.rb
|
205
205
|
- lib/natives/cli.rb
|
206
|
+
- lib/natives/gemfile_viewer.rb
|
206
207
|
- natives.gemspec
|
208
|
+
- spec/fixtures/Gemfile.empty
|
209
|
+
- spec/fixtures/Gemfile.empty.lock
|
207
210
|
- spec/natives/app_spec.rb
|
211
|
+
- spec/natives/gemfile_viewer_spec.rb
|
208
212
|
- spec/spec_helper.rb
|
209
213
|
homepage: http://github.com/teohm/natives
|
210
214
|
licenses:
|