natives 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +8 -8
  2. data/Gemfile +2 -3
  3. data/Gemfile.lock +12 -53
  4. data/README.md +126 -29
  5. data/Rakefile +4 -5
  6. data/VERSION +1 -1
  7. data/bin/natives +1 -0
  8. data/catalogs/rubygems.yaml +50 -0
  9. data/lib/natives/apps/detect.rb +21 -0
  10. data/lib/natives/apps/list.rb +39 -0
  11. data/lib/natives/apps.rb +2 -0
  12. data/lib/natives/catalog/loader.rb +30 -0
  13. data/lib/natives/catalog/merger.rb +26 -0
  14. data/lib/natives/catalog/selector.rb +79 -0
  15. data/lib/natives/catalog/validator.rb +18 -0
  16. data/lib/natives/catalog.rb +56 -0
  17. data/lib/natives/cli.rb +27 -42
  18. data/lib/natives/gemfile_viewer.rb +19 -16
  19. data/lib/natives/host_detection/package_provider.rb +83 -0
  20. data/lib/natives/host_detection/platform.rb +34 -0
  21. data/lib/natives/host_detection.rb +25 -0
  22. data/lib/natives.rb +1 -0
  23. data/spec/fixtures/dir_with_matching_files/invalid1.yml +9 -0
  24. data/spec/fixtures/dir_with_matching_files/not_matching.json +0 -0
  25. data/spec/fixtures/dir_with_matching_files/valid1.yaml +21 -0
  26. data/spec/fixtures/dir_with_matching_files/valid2.yml +9 -0
  27. data/spec/fixtures/dir_without_matching_file/not_matching.json +0 -0
  28. data/spec/natives/apps/detect_spec.rb +26 -0
  29. data/spec/natives/apps/list_spec.rb +58 -0
  30. data/spec/natives/catalog/loader_spec.rb +101 -0
  31. data/spec/natives/catalog/merger_spec.rb +60 -0
  32. data/spec/natives/catalog/selector_spec.rb +124 -0
  33. data/spec/natives/catalog/validator_spec.rb +44 -0
  34. data/spec/natives/catalog_spec.rb +133 -0
  35. data/spec/natives/gemfile_viewer_spec.rb +3 -3
  36. data/spec/natives/host_detection/package_provider_spec.rb +33 -0
  37. data/spec/natives/host_detection/platform_spec.rb +21 -0
  38. data/spec/natives/host_detection_spec.rb +45 -0
  39. data/spec/spec_helper.rb +17 -2
  40. metadata +44 -66
  41. data/chef/.kitchen.yml +0 -27
  42. data/chef/Berksfile +0 -4
  43. data/chef/Berksfile.lock +0 -10
  44. data/chef/cookbooks/natives/Berksfile +0 -3
  45. data/chef/cookbooks/natives/Gemfile +0 -5
  46. data/chef/cookbooks/natives/LICENSE +0 -3
  47. data/chef/cookbooks/natives/README.md +0 -13
  48. data/chef/cookbooks/natives/chefignore +0 -96
  49. data/chef/cookbooks/natives/libraries/natives_recipe_helper.rb +0 -37
  50. data/chef/cookbooks/natives/metadata.rb +0 -9
  51. data/chef/cookbooks/natives/recipes/default.rb +0 -31
  52. data/chef/solo.rb +0 -17
  53. data/chef/vendored-cookbooks/apt/CHANGELOG.md +0 -144
  54. data/chef/vendored-cookbooks/apt/README.md +0 -247
  55. data/chef/vendored-cookbooks/apt/attributes/default.rb +0 -27
  56. data/chef/vendored-cookbooks/apt/files/default/apt-proxy-v2.conf +0 -50
  57. data/chef/vendored-cookbooks/apt/libraries/helpers.rb +0 -47
  58. data/chef/vendored-cookbooks/apt/libraries/network.rb +0 -33
  59. data/chef/vendored-cookbooks/apt/metadata.json +0 -54
  60. data/chef/vendored-cookbooks/apt/metadata.rb +0 -34
  61. data/chef/vendored-cookbooks/apt/providers/preference.rb +0 -61
  62. data/chef/vendored-cookbooks/apt/providers/repository.rb +0 -141
  63. data/chef/vendored-cookbooks/apt/recipes/cacher-client.rb +0 -81
  64. data/chef/vendored-cookbooks/apt/recipes/cacher-ng.rb +0 -43
  65. data/chef/vendored-cookbooks/apt/recipes/default.rb +0 -83
  66. data/chef/vendored-cookbooks/apt/resources/preference.rb +0 -30
  67. data/chef/vendored-cookbooks/apt/resources/repository.rb +0 -41
  68. data/chef/vendored-cookbooks/apt/templates/debian-6.0/acng.conf.erb +0 -173
  69. data/chef/vendored-cookbooks/apt/templates/default/01proxy.erb +0 -5
  70. data/chef/vendored-cookbooks/apt/templates/default/acng.conf.erb +0 -275
  71. data/chef/vendored-cookbooks/apt/templates/ubuntu-10.04/acng.conf.erb +0 -269
  72. data/chef/vendored-cookbooks/homebrew/CHANGELOG.md +0 -36
  73. data/chef/vendored-cookbooks/homebrew/README.md +0 -110
  74. data/chef/vendored-cookbooks/homebrew/attributes/default.rb +0 -22
  75. data/chef/vendored-cookbooks/homebrew/libraries/homebrew_mixin.rb +0 -53
  76. data/chef/vendored-cookbooks/homebrew/libraries/homebrew_package.rb +0 -104
  77. data/chef/vendored-cookbooks/homebrew/metadata.json +0 -32
  78. data/chef/vendored-cookbooks/homebrew/metadata.rb +0 -10
  79. data/chef/vendored-cookbooks/homebrew/providers/tap.rb +0 -48
  80. data/chef/vendored-cookbooks/homebrew/recipes/default.rb +0 -46
  81. data/chef/vendored-cookbooks/homebrew/resources/tap.rb +0 -35
  82. data/lib/natives/app.rb +0 -71
  83. data/natives.gemspec +0 -125
  84. data/spec/natives/app_spec.rb +0 -153
@@ -0,0 +1,124 @@
1
+ require 'spec_helper'
2
+ require 'natives/catalog/selector'
3
+
4
+ describe Natives::Catalog::Selector do
5
+ describe "#new" do
6
+
7
+ describe "assert valid platform hash" do
8
+ it "raises error if platform hash is not a hash" do
9
+ expect {
10
+ Natives::Catalog::Selector.new(nil)
11
+ }.to raise_error(ArgumentError, "catalog entry should be a hash")
12
+ end
13
+
14
+ it "raises error when found an invalid string as hash key" do
15
+ expect {
16
+ Natives::Catalog::Selector.new({
17
+ "mac_os_x/homebrew" => {"default" => "value"},
18
+ "ubuntu" => {"default" => "value"},
19
+ "debian" => {"default" => "value"}
20
+ })
21
+ }.to raise_error ArgumentError, /Found an invalid key: "ubuntu"/
22
+ end
23
+
24
+ it "raises error when found an invalid array as hash key" do
25
+ expect {
26
+ Natives::Catalog::Selector.new({
27
+ ["fedora/yum", "redhat/yum"] => {"default" => "value"},
28
+ ["centos/yum", "oracle"] => {"default" => "value"},
29
+ })
30
+ }.to raise_error ArgumentError, /Found an invalid key: "oracle"/
31
+ end
32
+
33
+ it "raises error if platform hash's value is not a hash" do
34
+ expect {
35
+ Natives::Catalog::Selector.new({
36
+ "ubuntu/apt" => "value",
37
+ "mac_os_x/homebrew" => {"default" => "value"},
38
+ })
39
+ }.to raise_error ArgumentError, /Found an invalid value: "value"/
40
+ end
41
+
42
+ it "accepts default platform value" do
43
+ expect {
44
+ Natives::Catalog::Selector.new({
45
+ "default" => "value"
46
+ })
47
+ }.not_to raise_error
48
+ end
49
+ end
50
+
51
+ describe "normalize platform hash" do
52
+ class ProxySelector < Natives::Catalog::Selector
53
+ def normalized_values
54
+ @values
55
+ end
56
+ end
57
+
58
+ it "expand platform array" do
59
+ expect(ProxySelector.new({
60
+ "mac_os_x/homebrew" => {"default" => "value1"},
61
+ ["ubuntu/apt", "debian/apt"] => {"default" => "value2"}
62
+ }).normalized_values).to eq({
63
+ "mac_os_x/homebrew" => {"default" => "value1"},
64
+ "ubuntu/apt" => {"default" => "value2"},
65
+ "debian/apt" => {"default" => "value2"}
66
+ })
67
+ end
68
+
69
+ it "expand version array" do
70
+ expect(ProxySelector.new({
71
+ "mac_os_x/homebrew" => {
72
+ "default" => "value1",
73
+ ["v1", "v2"] => "value2"
74
+ }
75
+ }).normalized_values).to eq({
76
+ "mac_os_x/homebrew" => {
77
+ "default" => "value1",
78
+ "v1" => "value2",
79
+ "v2" => "value2"
80
+ }
81
+ })
82
+ end
83
+ end
84
+ end
85
+
86
+ describe "#value_for" do
87
+ it "returns the default value when the platform/package_provider doesn't match" do
88
+ expect(
89
+ Natives::Catalog::Selector.new({
90
+ "ubuntu/apt" => {"default" => "libcurl"},
91
+ "default" => "curl"
92
+ }).value_for('mac_os_x', '10.7.5', 'homebrew')
93
+ ).to eq('curl')
94
+ end
95
+
96
+ it "returns a value for a specific platform version" do
97
+ expect(
98
+ Natives::Catalog::Selector.new({
99
+ ["mac_os_x/homebrew", "mac_os_x/macports"] => {
100
+ "10.7.5" => "curl", "default" => "foo"},
101
+ "default" => "bar"
102
+ }).value_for('mac_os_x', '10.7.5', 'homebrew')
103
+ ).to eq('curl')
104
+ end
105
+
106
+ it "returns a platform-default value if the platform version doesn't match an explicit one" do
107
+ expect(
108
+ Natives::Catalog::Selector.new({
109
+ "mac_os_x/homebrew" => {
110
+ "10.7.5" => "curl", "default" => "foo"},
111
+ "default" => "bar"
112
+ }).value_for('mac_os_x', '10.8.0', 'homebrew')
113
+ ).to eq('foo')
114
+ end
115
+
116
+ it "returns nil if there is no default and no platforms match" do
117
+ expect(
118
+ Natives::Catalog::Selector.new({
119
+ ["mac_os_x/homebrew", "mac_os_x/macports"] => {"10.7.5" => "curl"}
120
+ }).value_for('mac_os_x', '10.8.0', 'homebrew')
121
+ ).to be_nil
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+ require 'natives/catalog/validator'
3
+
4
+ describe Natives::Catalog::Validator do
5
+
6
+ describe "#ensure_valid_catalog_groups" do
7
+ let(:validator) { Natives::Catalog::Validator.new }
8
+
9
+ it "ensures catalog groups is a hash" do
10
+ expect {
11
+ validator.ensure_valid_catalog_groups({"rubygems" => {} })
12
+ }.not_to raise_error
13
+ end
14
+
15
+ it "raises error if catalog groups is not a hash" do
16
+ expect {
17
+ validator.ensure_valid_catalog_groups([])
18
+ }.to raise_error ArgumentError
19
+ end
20
+
21
+ it "allows catalog groups to be empty" do
22
+ expect {
23
+ validator.ensure_valid_catalog_groups({})
24
+ }.not_to raise_error
25
+ end
26
+
27
+ it "ensures each catalog group's value is a hash" do
28
+ expect {
29
+ validator.ensure_valid_catalog_groups({"rubygems" => {"a" => "b"} })
30
+ }.not_to raise_error
31
+ end
32
+
33
+ it "raises error if any catalog group's value is not a hash" do
34
+ expect {
35
+ validator.ensure_valid_catalog_groups({
36
+ "rubygems" => {},
37
+ "npm" => nil,
38
+ "foo" => []
39
+ })
40
+ }.to raise_error(ArgumentError,
41
+ "The following catalog group(s) should be a Hash: npm, foo")
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,133 @@
1
+ require 'spec_helper'
2
+ require 'natives/catalog'
3
+
4
+ describe Natives::Catalog do
5
+
6
+ describe "#new" do
7
+ it "loads catalogs" do
8
+ Natives::Catalog.any_instance.should_receive(:reload)
9
+ Natives::Catalog.new('rubygems', 'mac_os_x', '10.7.5', 'homebrew')
10
+ end
11
+
12
+ it "requires caller to provide platform and package provider details" do
13
+ catalog = Natives::Catalog.new('rubygems',
14
+ 'mac_os_x', '10.7.5',
15
+ 'homebrew')
16
+
17
+ expect(catalog.name).to eq('rubygems')
18
+ expect(catalog.platform).to eq('mac_os_x')
19
+ expect(catalog.platform_version).to eq('10.7.5')
20
+ expect(catalog.package_provider).to eq('homebrew')
21
+ end
22
+ end
23
+
24
+ describe "#reload" do
25
+ it "reloads catalogs from default catalog paths" do
26
+ loader = double()
27
+ loader.
28
+ should_receive(:load_from_paths).
29
+ with([
30
+ Natives::Catalog::CATALOG_PATH_IN_GEM,
31
+ File.absolute_path(File.join(Dir.pwd, 'natives-catalogs'))
32
+ ]).
33
+ and_return({
34
+ 'rubygems' => {'foo' => {'key' => 'value'}},
35
+ 'npm' => {'bar' => {'key' => 'value'}}
36
+ })
37
+
38
+ catalog = Natives::Catalog.new('rubygems',
39
+ 'mac_os_x', '10.7.5', 'homebrew',
40
+ loader: loader)
41
+
42
+ expect(catalog.to_hash).to eq({'foo' => {'key' => 'value'}})
43
+ end
44
+
45
+ it "reloads catalogs from given working directory" do
46
+ loader = double()
47
+ loader.
48
+ should_receive(:load_from_paths).
49
+ with([
50
+ Natives::Catalog::CATALOG_PATH_IN_GEM,
51
+ '/path/to/working_dir/natives-catalogs'
52
+ ]).
53
+ and_return({
54
+ 'rubygems' => {'foo' => {'key' => 'value'}},
55
+ 'npm' => {'bar' => {'key' => 'value'}}
56
+ })
57
+
58
+ catalog = Natives::Catalog.new('rubygems',
59
+ 'mac_os_x', '10.7.5', 'homebrew',
60
+ loader: loader,
61
+ working_dir: '/path/to/working_dir')
62
+
63
+ expect(catalog.to_hash).to eq({'foo' => {'key' => 'value'}})
64
+
65
+ end
66
+ end
67
+
68
+ describe "#to_hash" do
69
+ before do
70
+ Natives::Catalog::Loader.any_instance.
71
+ stub(:load_from_paths).
72
+ and_return({
73
+ 'rubygems' => {'foo' => {'key' => 'value'}},
74
+ 'npm' => {'bar' => {'key' => 'value'}}
75
+ })
76
+ end
77
+
78
+ it "returns catalog hash of the specified catalog name" do
79
+ catalog = Natives::Catalog.new("npm", nil, nil, nil)
80
+ expect(catalog.to_hash).to eq({'bar' => {'key' => 'value'}})
81
+ end
82
+
83
+ it "returns empty hash if the sepcified catalog not found" do
84
+ catalog = Natives::Catalog.new("notfound", nil, nil, nil)
85
+ expect(catalog.to_hash).to eq({})
86
+ end
87
+ end
88
+
89
+ describe "#native_packages_for" do
90
+ before do
91
+ Natives::Catalog::Loader.any_instance.
92
+ stub(:load_from_paths).
93
+ and_return({
94
+ 'rubygems' => {
95
+ 'nokogiri' => {
96
+ 'ubuntu/apt' => {
97
+ '13.10' => 'value1',
98
+ 'default' => 'value2'
99
+ }
100
+ },
101
+ 'curb' => {
102
+ 'ubuntu/apt' => {
103
+ 'default' => 'value3'
104
+ }
105
+ }
106
+ },
107
+ })
108
+ end
109
+
110
+ it "returns native packages for the given catalog entry name" do
111
+ catalog = Natives::Catalog.new(:rubygems, 'ubuntu', '13.10', 'apt')
112
+ expect(catalog.native_packages_for('nokogiri')).to eq(['value1'])
113
+ end
114
+
115
+ it "returns empty list if the given catalog entry name does not exist" do
116
+ catalog = Natives::Catalog.new(:rubygems, 'ubuntu', '13.10', 'apt')
117
+ expect(catalog.native_packages_for('notfound')).to eq([])
118
+ end
119
+
120
+ it "return native packages for the given catalog entry name list" do
121
+ catalog = Natives::Catalog.new(:rubygems, 'ubuntu', '13.10', 'apt')
122
+ expect(catalog.native_packages_for(
123
+ 'nokogiri', 'notfound', 'curb')).to eq(['value1', 'value3'])
124
+ end
125
+
126
+ it "return native packages for the given catalog entry name array" do
127
+ catalog = Natives::Catalog.new(:rubygems, 'ubuntu', '13.10', 'apt')
128
+ expect(catalog.native_packages_for(
129
+ ['nokogiri', 'notfound', 'curb'])).to eq(['value1', 'value3'])
130
+ end
131
+ end
132
+
133
+ end
@@ -4,14 +4,14 @@ require 'natives/gemfile_viewer'
4
4
  describe Natives::GemfileViewer do
5
5
  describe "#packages" do
6
6
  it "list all gems specified in gemfile" do
7
- gemfile_path = "spec/fixtures/Gemfile.empty"
7
+ gemfile_path = File.join(fixture_path, "Gemfile.empty")
8
8
  gemfile = Natives::GemfileViewer.new(gemfile_path)
9
- expect(gemfile.packages).to eq(['bundler'])
9
+ expect(gemfile.gem_names).to eq(['bundler'])
10
10
  end
11
11
 
12
12
  it "raises error when failed to list gems in gemfile" do
13
13
  gemfile = Natives::GemfileViewer.new("gemfile_not_exist")
14
- expect { gemfile.packages }.to raise_error
14
+ expect { gemfile.gem_names }.to raise_error
15
15
  end
16
16
  end
17
17
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+ require 'natives/host_detection/package_provider'
3
+
4
+ describe Natives::HostDetection::PackageProvider do
5
+ it "detects host's package provider name" do
6
+ platform = double()
7
+ platform.should_receive(:name).and_return('ubuntu')
8
+
9
+ package_provider = Natives::HostDetection::PackageProvider.new(platform)
10
+
11
+ expect(package_provider.name).to eq('apt')
12
+ end
13
+
14
+ it "returns first package provider that exists in host" do
15
+ platform = double()
16
+ package_provider = Natives::HostDetection::PackageProvider.new(platform)
17
+ platform.should_receive(:name).and_return('mac_os_x')
18
+ package_provider.should_receive(:which).with('brew').and_return(nil)
19
+ package_provider.should_receive(:which).
20
+ with('port').and_return('/path/to/port')
21
+
22
+ expect(package_provider.name).to eq('macports')
23
+ end
24
+
25
+ it "returns nil when detection fails" do
26
+ platform = double()
27
+ platform.should_receive(:name).and_return('unknown')
28
+
29
+ package_provider = Natives::HostDetection::PackageProvider.new(platform)
30
+
31
+ expect(package_provider.name).to be_nil
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+ require 'natives/host_detection/platform'
3
+
4
+ describe Natives::HostDetection::Platform do
5
+ let(:platform) { Natives::HostDetection::Platform.new }
6
+
7
+ it "detects platform name" do
8
+ platform.should_receive(:ohai_hash).and_return({platform: 'ubuntu'})
9
+ expect(platform.name).to eq('ubuntu')
10
+ end
11
+
12
+ it "detects platform version" do
13
+ platform.should_receive(:ohai_hash).
14
+ and_return({platform_version: '12'})
15
+ expect(platform.version).to eq('12')
16
+ end
17
+
18
+ it "uses Ohai" do
19
+ expect(platform.ohai_hash).to be_kind_of Ohai::System
20
+ end
21
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+ require 'natives/host_detection'
3
+
4
+ describe Natives::HostDetection do
5
+ it "detects host's platform" do
6
+ detect_platform = double()
7
+ detect_platform.stub(:name).and_return('foobar')
8
+ detect = Natives::HostDetection.new(
9
+ detect_package_provider: nil,
10
+ detect_platform: detect_platform)
11
+
12
+ expect(detect.platform).to eq('foobar')
13
+ end
14
+
15
+ it "detects host's platform version" do
16
+ detect_platform = double()
17
+ detect_platform.stub(:version).and_return('1')
18
+ detect = Natives::HostDetection.new(
19
+ detect_package_provider: nil,
20
+ detect_platform: detect_platform)
21
+
22
+ expect(detect.platform_version).to eq('1')
23
+ end
24
+
25
+ it "detects host's package provider" do
26
+ detect_package_provider = Natives::HostDetection::PackageProvider.new(
27
+ double())
28
+ detect_package_provider.stub(:name).and_return('yummy')
29
+ detect = Natives::HostDetection.new(
30
+ detect_platform: nil,
31
+ detect_package_provider: detect_package_provider)
32
+
33
+ expect(detect.package_provider).to eq('yummy')
34
+ end
35
+
36
+ it "uses Platform and PackagePacker by default" do
37
+ Natives::HostDetection::Platform.should_receive(:new).
38
+ and_return('foo')
39
+ Natives::HostDetection::PackageProvider.should_receive(:new).
40
+ with('foo')
41
+
42
+ Natives::HostDetection.new
43
+ end
44
+
45
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,12 +1,27 @@
1
1
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $LOAD_PATH.unshift(File.dirname(__FILE__))
3
3
  require 'rspec'
4
- require 'natives'
4
+
5
+ if ENV['COVERAGE']
6
+ require 'simplecov'
7
+ SimpleCov.start
8
+ end
5
9
 
6
10
  # Requires supporting files with custom matchers and macros, etc,
7
11
  # in ./support/ and its subdirectories.
8
12
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
9
13
 
14
+ module Natives
15
+ module FixtureSupport
16
+ def fixture_path
17
+ RSpec.configuration.fixture_path
18
+ end
19
+ end
20
+ end
21
+
10
22
  RSpec.configure do |config|
11
-
23
+ config.add_setting :fixture_path
24
+ config.fixture_path = File.join(File.dirname(__FILE__), 'fixtures')
25
+
26
+ config.include Natives::FixtureSupport
12
27
  end
metadata CHANGED
@@ -1,55 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: natives
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.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-06 00:00:00.000000000 Z
11
+ date: 2013-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: chef
14
+ name: ohai
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
- version: !binary |-
20
- MTEuNi4y
19
+ version: '0'
21
20
  type: :runtime
22
21
  prerelease: false
23
22
  version_requirements: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - ! '>='
26
25
  - !ruby/object:Gem::Version
27
- version: !binary |-
28
- MTEuNi4y
26
+ version: '0'
29
27
  - !ruby/object:Gem::Dependency
30
- name: natives-catalog
28
+ name: thor
31
29
  requirement: !ruby/object:Gem::Requirement
32
30
  requirements:
33
31
  - - ! '>='
34
32
  - !ruby/object:Gem::Version
35
- version: !binary |-
36
- MC4zLjQ=
33
+ version: '0'
37
34
  type: :runtime
38
35
  prerelease: false
39
36
  version_requirements: !ruby/object:Gem::Requirement
40
37
  requirements:
41
38
  - - ! '>='
42
39
  - !ruby/object:Gem::Version
43
- version: !binary |-
44
- MC4zLjQ=
40
+ version: '0'
45
41
  - !ruby/object:Gem::Dependency
46
- name: thor
42
+ name: rspec
47
43
  requirement: !ruby/object:Gem::Requirement
48
44
  requirements:
49
45
  - - ! '>='
50
46
  - !ruby/object:Gem::Version
51
47
  version: '0'
52
- type: :runtime
48
+ type: :development
53
49
  prerelease: false
54
50
  version_requirements: !ruby/object:Gem::Requirement
55
51
  requirements:
@@ -57,7 +53,7 @@ dependencies:
57
53
  - !ruby/object:Gem::Version
58
54
  version: '0'
59
55
  - !ruby/object:Gem::Dependency
60
- name: rspec
56
+ name: yard
61
57
  requirement: !ruby/object:Gem::Requirement
62
58
  requirements:
63
59
  - - ! '>='
@@ -71,7 +67,7 @@ dependencies:
71
67
  - !ruby/object:Gem::Version
72
68
  version: '0'
73
69
  - !ruby/object:Gem::Dependency
74
- name: yard
70
+ name: rdoc
75
71
  requirement: !ruby/object:Gem::Requirement
76
72
  requirements:
77
73
  - - ! '>='
@@ -85,7 +81,7 @@ dependencies:
85
81
  - !ruby/object:Gem::Version
86
82
  version: '0'
87
83
  - !ruby/object:Gem::Dependency
88
- name: rdoc
84
+ name: bundler
89
85
  requirement: !ruby/object:Gem::Requirement
90
86
  requirements:
91
87
  - - ! '>='
@@ -99,7 +95,7 @@ dependencies:
99
95
  - !ruby/object:Gem::Version
100
96
  version: '0'
101
97
  - !ruby/object:Gem::Dependency
102
- name: bundler
98
+ name: jeweler
103
99
  requirement: !ruby/object:Gem::Requirement
104
100
  requirements:
105
101
  - - ! '>='
@@ -113,7 +109,7 @@ dependencies:
113
109
  - !ruby/object:Gem::Version
114
110
  version: '0'
115
111
  - !ruby/object:Gem::Dependency
116
- name: jeweler
112
+ name: debugger
117
113
  requirement: !ruby/object:Gem::Requirement
118
114
  requirements:
119
115
  - - ! '>='
@@ -140,8 +136,7 @@ dependencies:
140
136
  - - ! '>='
141
137
  - !ruby/object:Gem::Version
142
138
  version: '0'
143
- description: Installs native library packages required by Ruby gems on different platforms,
144
- based on the catalog maintained by natives-catalog project.
139
+ description: Lookup native package dependencies required by gems.
145
140
  email: teohuiming@gmail.com
146
141
  executables:
147
142
  - natives
@@ -159,56 +154,39 @@ files:
159
154
  - Rakefile
160
155
  - VERSION
161
156
  - bin/natives
162
- - chef/.kitchen.yml
163
- - chef/Berksfile
164
- - chef/Berksfile.lock
165
- - chef/cookbooks/natives/Berksfile
166
- - chef/cookbooks/natives/Gemfile
167
- - chef/cookbooks/natives/LICENSE
168
- - chef/cookbooks/natives/README.md
169
- - chef/cookbooks/natives/chefignore
170
- - chef/cookbooks/natives/libraries/natives_recipe_helper.rb
171
- - chef/cookbooks/natives/metadata.rb
172
- - chef/cookbooks/natives/recipes/default.rb
173
- - chef/solo.rb
174
- - chef/vendored-cookbooks/apt/CHANGELOG.md
175
- - chef/vendored-cookbooks/apt/README.md
176
- - chef/vendored-cookbooks/apt/attributes/default.rb
177
- - chef/vendored-cookbooks/apt/files/default/apt-proxy-v2.conf
178
- - chef/vendored-cookbooks/apt/libraries/helpers.rb
179
- - chef/vendored-cookbooks/apt/libraries/network.rb
180
- - chef/vendored-cookbooks/apt/metadata.json
181
- - chef/vendored-cookbooks/apt/metadata.rb
182
- - chef/vendored-cookbooks/apt/providers/preference.rb
183
- - chef/vendored-cookbooks/apt/providers/repository.rb
184
- - chef/vendored-cookbooks/apt/recipes/cacher-client.rb
185
- - chef/vendored-cookbooks/apt/recipes/cacher-ng.rb
186
- - chef/vendored-cookbooks/apt/recipes/default.rb
187
- - chef/vendored-cookbooks/apt/resources/preference.rb
188
- - chef/vendored-cookbooks/apt/resources/repository.rb
189
- - chef/vendored-cookbooks/apt/templates/debian-6.0/acng.conf.erb
190
- - chef/vendored-cookbooks/apt/templates/default/01proxy.erb
191
- - chef/vendored-cookbooks/apt/templates/default/acng.conf.erb
192
- - chef/vendored-cookbooks/apt/templates/ubuntu-10.04/acng.conf.erb
193
- - chef/vendored-cookbooks/homebrew/CHANGELOG.md
194
- - chef/vendored-cookbooks/homebrew/README.md
195
- - chef/vendored-cookbooks/homebrew/attributes/default.rb
196
- - chef/vendored-cookbooks/homebrew/libraries/homebrew_mixin.rb
197
- - chef/vendored-cookbooks/homebrew/libraries/homebrew_package.rb
198
- - chef/vendored-cookbooks/homebrew/metadata.json
199
- - chef/vendored-cookbooks/homebrew/metadata.rb
200
- - chef/vendored-cookbooks/homebrew/providers/tap.rb
201
- - chef/vendored-cookbooks/homebrew/recipes/default.rb
202
- - chef/vendored-cookbooks/homebrew/resources/tap.rb
157
+ - catalogs/rubygems.yaml
203
158
  - lib/natives.rb
204
- - lib/natives/app.rb
159
+ - lib/natives/apps.rb
160
+ - lib/natives/apps/detect.rb
161
+ - lib/natives/apps/list.rb
162
+ - lib/natives/catalog.rb
163
+ - lib/natives/catalog/loader.rb
164
+ - lib/natives/catalog/merger.rb
165
+ - lib/natives/catalog/selector.rb
166
+ - lib/natives/catalog/validator.rb
205
167
  - lib/natives/cli.rb
206
168
  - lib/natives/gemfile_viewer.rb
207
- - natives.gemspec
169
+ - lib/natives/host_detection.rb
170
+ - lib/natives/host_detection/package_provider.rb
171
+ - lib/natives/host_detection/platform.rb
208
172
  - spec/fixtures/Gemfile.empty
209
173
  - spec/fixtures/Gemfile.empty.lock
210
- - spec/natives/app_spec.rb
174
+ - spec/fixtures/dir_with_matching_files/invalid1.yml
175
+ - spec/fixtures/dir_with_matching_files/not_matching.json
176
+ - spec/fixtures/dir_with_matching_files/valid1.yaml
177
+ - spec/fixtures/dir_with_matching_files/valid2.yml
178
+ - spec/fixtures/dir_without_matching_file/not_matching.json
179
+ - spec/natives/apps/detect_spec.rb
180
+ - spec/natives/apps/list_spec.rb
181
+ - spec/natives/catalog/loader_spec.rb
182
+ - spec/natives/catalog/merger_spec.rb
183
+ - spec/natives/catalog/selector_spec.rb
184
+ - spec/natives/catalog/validator_spec.rb
185
+ - spec/natives/catalog_spec.rb
211
186
  - spec/natives/gemfile_viewer_spec.rb
187
+ - spec/natives/host_detection/package_provider_spec.rb
188
+ - spec/natives/host_detection/platform_spec.rb
189
+ - spec/natives/host_detection_spec.rb
212
190
  - spec/spec_helper.rb
213
191
  homepage: http://github.com/teohm/natives
214
192
  licenses:
@@ -233,5 +211,5 @@ rubyforge_project:
233
211
  rubygems_version: 2.1.10
234
212
  signing_key:
235
213
  specification_version: 4
236
- summary: Installs native library packages required by Ruby gems on your machine.
214
+ summary: Lookup native packages required by gems.
237
215
  test_files: []