bundler_ext 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/MIT-LICENSE +20 -0
- data/README.md +9 -3
- data/Rakefile +5 -17
- data/lib/bundler_ext.rb +1 -0
- data/lib/bundler_ext/bundler_ext.rb +65 -0
- data/lib/bundler_ext/version.rb +3 -0
- data/spec/bundler_ext/bundler_ext_spec.rb +78 -0
- data/spec/spec_helper.rb +1 -0
- metadata +14 -13
- data/COPYING +0 -176
- data/lib/aeolus/ext.rb +0 -18
- data/lib/aeolus/ext/bundler_ext.rb +0 -85
- data/lib/aeolus/ext/version.rb +0 -21
- data/spec/aeolus/ext/bundler_ext_spec.rb +0 -97
- data/spec/bundler_ext_helper.rb +0 -17
data/CHANGELOG
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2012 Red Hat, Inc.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -22,17 +22,17 @@ other.
|
|
22
22
|
|
23
23
|
If you want to load ALL Gemfile groups, use the following statement:
|
24
24
|
|
25
|
-
|
25
|
+
BundlerExt.system_require(File.expand_path('../../Gemfile.in', __FILE__), :all)
|
26
26
|
|
27
27
|
When you want to load only the default one, use:
|
28
28
|
|
29
|
-
|
29
|
+
BundlerExt.system_require(File.expand_path('../../Gemfile.in', __FILE__), :default)
|
30
30
|
|
31
31
|
You can provide multiple parameters to the system_require function
|
32
32
|
of course. Finally, you will be likely requiring default group and
|
33
33
|
group named as the current Rails environment; use this:
|
34
34
|
|
35
|
-
|
35
|
+
BundlerExt.system_require(File.expand_path('../../Gemfile.in', __FILE__), :default, Rails.env)
|
36
36
|
|
37
37
|
You may also want to wrap your call in some kind of check, to allow
|
38
38
|
non-platform users (ie, mac, or any developer not installing as a
|
@@ -77,3 +77,9 @@ not running daemonized. For this purposes there is BUNDLER_EXT_HOME
|
|
77
77
|
variable which can be used to set HOME environment variable before
|
78
78
|
any rubygem gets loaded. The variable is not exported for
|
79
79
|
subprocesses.
|
80
|
+
|
81
|
+
### License ###
|
82
|
+
|
83
|
+
bundler_ext is licensed under the MIT Licence.
|
84
|
+
|
85
|
+
* http://www.opensource.org/licenses/MIT
|
data/Rakefile
CHANGED
@@ -1,25 +1,13 @@
|
|
1
|
-
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
1
|
+
#!/usr/bin/env rake
|
17
2
|
begin
|
18
3
|
require 'rspec/core/rake_task'
|
4
|
+
require 'bundler'
|
19
5
|
rescue LoadError
|
20
|
-
puts "Please install development dependencies to run
|
6
|
+
puts "Please install runtime and development dependencies to run tasks"
|
21
7
|
end
|
22
8
|
|
9
|
+
Bundler::GemHelper.install_tasks
|
10
|
+
|
23
11
|
RSpec::Core::RakeTask.new('spec')
|
24
12
|
|
25
13
|
desc "Run specs"
|
data/lib/bundler_ext.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler_ext/bundler_ext'
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "bundler"
|
2
|
+
|
3
|
+
# some rubygems does not play well with daemonized processes ($HOME is empty)
|
4
|
+
ENV['HOME'] = ENV['BUNDLER_EXT_HOME'] if ENV['BUNDLER_EXT_HOME']
|
5
|
+
|
6
|
+
class BundlerExt
|
7
|
+
def self.parse_from_gemfile(gemfile,*groups)
|
8
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
9
|
+
extra_groups = ENV['BUNDLER_EXT_GROUPS']
|
10
|
+
extra_groups.split(/\s/).each {|g| groups << g.to_sym} if extra_groups
|
11
|
+
all_groups = false
|
12
|
+
all_groups = true if groups.size == 1 and groups.include?(:all) and not extra_groups
|
13
|
+
groups.map! { |g| g.to_sym }
|
14
|
+
g = Bundler::Dsl.evaluate(gemfile,'foo',true)
|
15
|
+
list = []
|
16
|
+
g.dependencies.each do |dep|
|
17
|
+
if ((groups & dep.groups).any? || all_groups) && dep.current_platform?
|
18
|
+
Array(dep.autorequire || dep.name).each do |file|
|
19
|
+
list << file
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
list
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.strict_error(msg)
|
27
|
+
if ENV['BUNDLER_EXT_NOSTRICT']
|
28
|
+
puts msg
|
29
|
+
else
|
30
|
+
raise msg
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.system_require(gemfile,*groups)
|
35
|
+
BundlerExt.parse_from_gemfile(gemfile,*groups).each do |dep|
|
36
|
+
#This part ripped wholesale from lib/bundler/runtime.rb (github/master)
|
37
|
+
begin
|
38
|
+
#puts "Attempting to require #{dep}"
|
39
|
+
require dep
|
40
|
+
rescue LoadError => e
|
41
|
+
#puts "Caught error: #{e.message}"
|
42
|
+
if dep.include?('-')
|
43
|
+
begin
|
44
|
+
if dep.respond_to? :name
|
45
|
+
namespaced_file = dep.name.gsub('-', '/')
|
46
|
+
else
|
47
|
+
# try to load unresolved deps
|
48
|
+
namespaced_file = dep.gsub('-', '/')
|
49
|
+
end
|
50
|
+
#puts "Munged the name, now trying to require as #{namespaced_file}"
|
51
|
+
require namespaced_file
|
52
|
+
rescue LoadError => e2
|
53
|
+
strict_error "Gem loading error: #{e2.message}"
|
54
|
+
end
|
55
|
+
else
|
56
|
+
strict_error "Gem loading error: #{e.message}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.output
|
63
|
+
ENV['BUNDLER_STDERR'] || $stderr
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe BundlerExt do
|
4
|
+
before(:each) do
|
5
|
+
@gemfile = 'spec/fixtures/Gemfile.in'
|
6
|
+
end
|
7
|
+
after(:each) do
|
8
|
+
ENV['BUNDLER_EXT_NOSTRICT'] = nil
|
9
|
+
ENV['BUNDLER_EXT_GROUPS'] = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "#parse_from_gemfile" do
|
13
|
+
describe "with no group passed in" do
|
14
|
+
it "should return nothing to require" do
|
15
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile)
|
16
|
+
libs.should be_an(Array)
|
17
|
+
libs.should_not include('deltacloud')
|
18
|
+
libs.should_not include('vcr')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
describe "with :all passed in" do
|
22
|
+
it "should return the list of system libraries in all groups to require" do
|
23
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile, :all)
|
24
|
+
libs.should be_an(Array)
|
25
|
+
libs.should include('deltacloud')
|
26
|
+
libs.should include('vcr')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
describe "with group passed in" do
|
30
|
+
it "should not return any deps that are not in the 'development' group" do
|
31
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile,'development')
|
32
|
+
libs.should be_an(Array)
|
33
|
+
libs.should_not include('deltacloud')
|
34
|
+
end
|
35
|
+
it "should return only deps that are in the :test group" do
|
36
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile, :test)
|
37
|
+
libs.should be_an(Array)
|
38
|
+
libs.should_not include('deltacloud')
|
39
|
+
libs.should include('vcr')
|
40
|
+
end
|
41
|
+
it "should return deps from both the :default and :test groups" do
|
42
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile, :default, :test)
|
43
|
+
libs.should be_an(Array)
|
44
|
+
libs.should include('deltacloud')
|
45
|
+
libs.should include('vcr')
|
46
|
+
end
|
47
|
+
end
|
48
|
+
it "should only return deps for the current platform" do
|
49
|
+
libs = BundlerExt.parse_from_gemfile(@gemfile)
|
50
|
+
libs.should be_an(Array)
|
51
|
+
if RUBY_VERSION < "1.9"
|
52
|
+
libs.should_not include('cinch')
|
53
|
+
else
|
54
|
+
libs.should_not include('fastercsv')
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
describe "#system_require" do
|
59
|
+
it "strict mode should fail loading non existing gem" do
|
60
|
+
expect { BundlerExt.system_require(@gemfile, :fail) }.to raise_error
|
61
|
+
end
|
62
|
+
it "non-strict mode should load the libraries in the gemfile" do
|
63
|
+
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
64
|
+
BundlerExt.system_require(@gemfile)
|
65
|
+
defined?(Gem).should be_true
|
66
|
+
end
|
67
|
+
it "non-strict mode should load the libraries in the gemfile" do
|
68
|
+
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
69
|
+
BundlerExt.system_require(@gemfile, :fail)
|
70
|
+
defined?(Gem).should be_true
|
71
|
+
end
|
72
|
+
it "non-strict mode should load the libraries using env var list" do
|
73
|
+
ENV['BUNDLER_EXT_GROUPS'] = 'test development blah'
|
74
|
+
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
75
|
+
defined?(Gem::Command).should be_true
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'bundler_ext/bundler_ext'
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bundler_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jason Guiditta
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2013-01-15 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: bundler
|
@@ -57,19 +57,20 @@ extensions: []
|
|
57
57
|
extra_rdoc_files: []
|
58
58
|
|
59
59
|
files:
|
60
|
-
- lib/
|
61
|
-
- lib/
|
62
|
-
- lib/
|
60
|
+
- lib/bundler_ext/version.rb
|
61
|
+
- lib/bundler_ext/bundler_ext.rb
|
62
|
+
- lib/bundler_ext.rb
|
63
63
|
- README.md
|
64
|
-
-
|
64
|
+
- MIT-LICENSE
|
65
65
|
- Rakefile
|
66
|
-
-
|
67
|
-
- spec/
|
66
|
+
- CHANGELOG
|
67
|
+
- spec/bundler_ext/bundler_ext_spec.rb
|
68
|
+
- spec/spec_helper.rb
|
68
69
|
- spec/fixtures/Gemfile.in
|
69
70
|
- .rspec
|
70
71
|
homepage: https://github.com/aeolus-incubator/bundler_ext
|
71
72
|
licenses:
|
72
|
-
-
|
73
|
+
- MIT
|
73
74
|
post_install_message:
|
74
75
|
rdoc_options: []
|
75
76
|
|
@@ -101,7 +102,7 @@ signing_key:
|
|
101
102
|
specification_version: 3
|
102
103
|
summary: Load system gems via Bundler DSL
|
103
104
|
test_files:
|
104
|
-
- spec/
|
105
|
-
- spec/
|
105
|
+
- spec/bundler_ext/bundler_ext_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
106
107
|
- spec/fixtures/Gemfile.in
|
107
108
|
- .rspec
|
data/COPYING
DELETED
@@ -1,176 +0,0 @@
|
|
1
|
-
Apache License
|
2
|
-
Version 2.0, January 2004
|
3
|
-
http://www.apache.org/licenses/
|
4
|
-
|
5
|
-
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
6
|
-
|
7
|
-
1. Definitions.
|
8
|
-
|
9
|
-
"License" shall mean the terms and conditions for use, reproduction,
|
10
|
-
and distribution as defined by Sections 1 through 9 of this document.
|
11
|
-
|
12
|
-
"Licensor" shall mean the copyright owner or entity authorized by
|
13
|
-
the copyright owner that is granting the License.
|
14
|
-
|
15
|
-
"Legal Entity" shall mean the union of the acting entity and all
|
16
|
-
other entities that control, are controlled by, or are under common
|
17
|
-
control with that entity. For the purposes of this definition,
|
18
|
-
"control" means (i) the power, direct or indirect, to cause the
|
19
|
-
direction or management of such entity, whether by contract or
|
20
|
-
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
21
|
-
outstanding shares, or (iii) beneficial ownership of such entity.
|
22
|
-
|
23
|
-
"You" (or "Your") shall mean an individual or Legal Entity
|
24
|
-
exercising permissions granted by this License.
|
25
|
-
|
26
|
-
"Source" form shall mean the preferred form for making modifications,
|
27
|
-
including but not limited to software source code, documentation
|
28
|
-
source, and configuration files.
|
29
|
-
|
30
|
-
"Object" form shall mean any form resulting from mechanical
|
31
|
-
transformation or translation of a Source form, including but
|
32
|
-
not limited to compiled object code, generated documentation,
|
33
|
-
and conversions to other media types.
|
34
|
-
|
35
|
-
"Work" shall mean the work of authorship, whether in Source or
|
36
|
-
Object form, made available under the License, as indicated by a
|
37
|
-
copyright notice that is included in or attached to the work
|
38
|
-
(an example is provided in the Appendix below).
|
39
|
-
|
40
|
-
"Derivative Works" shall mean any work, whether in Source or Object
|
41
|
-
form, that is based on (or derived from) the Work and for which the
|
42
|
-
editorial revisions, annotations, elaborations, or other modifications
|
43
|
-
represent, as a whole, an original work of authorship. For the purposes
|
44
|
-
of this License, Derivative Works shall not include works that remain
|
45
|
-
separable from, or merely link (or bind by name) to the interfaces of,
|
46
|
-
the Work and Derivative Works thereof.
|
47
|
-
|
48
|
-
"Contribution" shall mean any work of authorship, including
|
49
|
-
the original version of the Work and any modifications or additions
|
50
|
-
to that Work or Derivative Works thereof, that is intentionally
|
51
|
-
submitted to Licensor for inclusion in the Work by the copyright owner
|
52
|
-
or by an individual or Legal Entity authorized to submit on behalf of
|
53
|
-
the copyright owner. For the purposes of this definition, "submitted"
|
54
|
-
means any form of electronic, verbal, or written communication sent
|
55
|
-
to the Licensor or its representatives, including but not limited to
|
56
|
-
communication on electronic mailing lists, source code control systems,
|
57
|
-
and issue tracking systems that are managed by, or on behalf of, the
|
58
|
-
Licensor for the purpose of discussing and improving the Work, but
|
59
|
-
excluding communication that is conspicuously marked or otherwise
|
60
|
-
designated in writing by the copyright owner as "Not a Contribution."
|
61
|
-
|
62
|
-
"Contributor" shall mean Licensor and any individual or Legal Entity
|
63
|
-
on behalf of whom a Contribution has been received by Licensor and
|
64
|
-
subsequently incorporated within the Work.
|
65
|
-
|
66
|
-
2. Grant of Copyright License. Subject to the terms and conditions of
|
67
|
-
this License, each Contributor hereby grants to You a perpetual,
|
68
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
69
|
-
copyright license to reproduce, prepare Derivative Works of,
|
70
|
-
publicly display, publicly perform, sublicense, and distribute the
|
71
|
-
Work and such Derivative Works in Source or Object form.
|
72
|
-
|
73
|
-
3. Grant of Patent License. Subject to the terms and conditions of
|
74
|
-
this License, each Contributor hereby grants to You a perpetual,
|
75
|
-
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
76
|
-
(except as stated in this section) patent license to make, have made,
|
77
|
-
use, offer to sell, sell, import, and otherwise transfer the Work,
|
78
|
-
where such license applies only to those patent claims licensable
|
79
|
-
by such Contributor that are necessarily infringed by their
|
80
|
-
Contribution(s) alone or by combination of their Contribution(s)
|
81
|
-
with the Work to which such Contribution(s) was submitted. If You
|
82
|
-
institute patent litigation against any entity (including a
|
83
|
-
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
84
|
-
or a Contribution incorporated within the Work constitutes direct
|
85
|
-
or contributory patent infringement, then any patent licenses
|
86
|
-
granted to You under this License for that Work shall terminate
|
87
|
-
as of the date such litigation is filed.
|
88
|
-
|
89
|
-
4. Redistribution. You may reproduce and distribute copies of the
|
90
|
-
Work or Derivative Works thereof in any medium, with or without
|
91
|
-
modifications, and in Source or Object form, provided that You
|
92
|
-
meet the following conditions:
|
93
|
-
|
94
|
-
(a) You must give any other recipients of the Work or
|
95
|
-
Derivative Works a copy of this License; and
|
96
|
-
|
97
|
-
(b) You must cause any modified files to carry prominent notices
|
98
|
-
stating that You changed the files; and
|
99
|
-
|
100
|
-
(c) You must retain, in the Source form of any Derivative Works
|
101
|
-
that You distribute, all copyright, patent, trademark, and
|
102
|
-
attribution notices from the Source form of the Work,
|
103
|
-
excluding those notices that do not pertain to any part of
|
104
|
-
the Derivative Works; and
|
105
|
-
|
106
|
-
(d) If the Work includes a "NOTICE" text file as part of its
|
107
|
-
distribution, then any Derivative Works that You distribute must
|
108
|
-
include a readable copy of the attribution notices contained
|
109
|
-
within such NOTICE file, excluding those notices that do not
|
110
|
-
pertain to any part of the Derivative Works, in at least one
|
111
|
-
of the following places: within a NOTICE text file distributed
|
112
|
-
as part of the Derivative Works; within the Source form or
|
113
|
-
documentation, if provided along with the Derivative Works; or,
|
114
|
-
within a display generated by the Derivative Works, if and
|
115
|
-
wherever such third-party notices normally appear. The contents
|
116
|
-
of the NOTICE file are for informational purposes only and
|
117
|
-
do not modify the License. You may add Your own attribution
|
118
|
-
notices within Derivative Works that You distribute, alongside
|
119
|
-
or as an addendum to the NOTICE text from the Work, provided
|
120
|
-
that such additional attribution notices cannot be construed
|
121
|
-
as modifying the License.
|
122
|
-
|
123
|
-
You may add Your own copyright statement to Your modifications and
|
124
|
-
may provide additional or different license terms and conditions
|
125
|
-
for use, reproduction, or distribution of Your modifications, or
|
126
|
-
for any such Derivative Works as a whole, provided Your use,
|
127
|
-
reproduction, and distribution of the Work otherwise complies with
|
128
|
-
the conditions stated in this License.
|
129
|
-
|
130
|
-
5. Submission of Contributions. Unless You explicitly state otherwise,
|
131
|
-
any Contribution intentionally submitted for inclusion in the Work
|
132
|
-
by You to the Licensor shall be under the terms and conditions of
|
133
|
-
this License, without any additional terms or conditions.
|
134
|
-
Notwithstanding the above, nothing herein shall supersede or modify
|
135
|
-
the terms of any separate license agreement you may have executed
|
136
|
-
with Licensor regarding such Contributions.
|
137
|
-
|
138
|
-
6. Trademarks. This License does not grant permission to use the trade
|
139
|
-
names, trademarks, service marks, or product names of the Licensor,
|
140
|
-
except as required for reasonable and customary use in describing the
|
141
|
-
origin of the Work and reproducing the content of the NOTICE file.
|
142
|
-
|
143
|
-
7. Disclaimer of Warranty. Unless required by applicable law or
|
144
|
-
agreed to in writing, Licensor provides the Work (and each
|
145
|
-
Contributor provides its Contributions) on an "AS IS" BASIS,
|
146
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
147
|
-
implied, including, without limitation, any warranties or conditions
|
148
|
-
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
149
|
-
PARTICULAR PURPOSE. You are solely responsible for determining the
|
150
|
-
appropriateness of using or redistributing the Work and assume any
|
151
|
-
risks associated with Your exercise of permissions under this License.
|
152
|
-
|
153
|
-
8. Limitation of Liability. In no event and under no legal theory,
|
154
|
-
whether in tort (including negligence), contract, or otherwise,
|
155
|
-
unless required by applicable law (such as deliberate and grossly
|
156
|
-
negligent acts) or agreed to in writing, shall any Contributor be
|
157
|
-
liable to You for damages, including any direct, indirect, special,
|
158
|
-
incidental, or consequential damages of any character arising as a
|
159
|
-
result of this License or out of the use or inability to use the
|
160
|
-
Work (including but not limited to damages for loss of goodwill,
|
161
|
-
work stoppage, computer failure or malfunction, or any and all
|
162
|
-
other commercial damages or losses), even if such Contributor
|
163
|
-
has been advised of the possibility of such damages.
|
164
|
-
|
165
|
-
9. Accepting Warranty or Additional Liability. While redistributing
|
166
|
-
the Work or Derivative Works thereof, You may choose to offer,
|
167
|
-
and charge a fee for, acceptance of support, warranty, indemnity,
|
168
|
-
or other liability obligations and/or rights consistent with this
|
169
|
-
License. However, in accepting such obligations, You may act only
|
170
|
-
on Your own behalf and on Your sole responsibility, not on behalf
|
171
|
-
of any other Contributor, and only if You agree to indemnify,
|
172
|
-
defend, and hold each Contributor harmless for any liability
|
173
|
-
incurred by, or claims asserted against, such Contributor by reason
|
174
|
-
of your accepting any such warranty or additional liability.
|
175
|
-
|
176
|
-
END OF TERMS AND CONDITIONS
|
data/lib/aeolus/ext.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
18
|
-
require File.join(File.dirname(__FILE__), 'ext', 'bundler_ext')
|
@@ -1,85 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
17
|
-
require "bundler"
|
18
|
-
|
19
|
-
# some rubygems does not play well with daemonized processes ($HOME is empty)
|
20
|
-
ENV['HOME'] = ENV['BUNDLER_EXT_HOME'] if ENV['BUNDLER_EXT_HOME']
|
21
|
-
|
22
|
-
module Aeolus
|
23
|
-
module Ext
|
24
|
-
class BundlerExt
|
25
|
-
def self.parse_from_gemfile(gemfile,*groups)
|
26
|
-
ENV['BUNDLE_GEMFILE'] = gemfile
|
27
|
-
extra_groups = ENV['BUNDLER_EXT_GROUPS']
|
28
|
-
extra_groups.split(/\s/).each {|g| groups << g.to_sym} if extra_groups
|
29
|
-
all_groups = false
|
30
|
-
all_groups = true if groups.size == 1 and groups.include?(:all) and not extra_groups
|
31
|
-
groups.map! { |g| g.to_sym }
|
32
|
-
g = Bundler::Dsl.evaluate(gemfile,'foo',true)
|
33
|
-
list = []
|
34
|
-
g.dependencies.each do |dep|
|
35
|
-
if ((groups & dep.groups).any? || all_groups) && dep.current_platform?
|
36
|
-
Array(dep.autorequire || dep.name).each do |file|
|
37
|
-
list << file
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
list
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.strict_error(msg)
|
45
|
-
if ENV['BUNDLER_EXT_NOSTRICT']
|
46
|
-
puts msg
|
47
|
-
else
|
48
|
-
raise msg
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.system_require(gemfile,*groups)
|
53
|
-
BundlerExt.parse_from_gemfile(gemfile,*groups).each do |dep|
|
54
|
-
#This part ripped wholesale from lib/bundler/runtime.rb (github/master)
|
55
|
-
begin
|
56
|
-
#puts "Attempting to require #{dep}"
|
57
|
-
require dep
|
58
|
-
rescue LoadError => e
|
59
|
-
#puts "Caught error: #{e.message}"
|
60
|
-
if dep.include?('-')
|
61
|
-
begin
|
62
|
-
if dep.respond_to? :name
|
63
|
-
namespaced_file = dep.name.gsub('-', '/')
|
64
|
-
else
|
65
|
-
# try to load unresolved deps
|
66
|
-
namespaced_file = dep.gsub('-', '/')
|
67
|
-
end
|
68
|
-
#puts "Munged the name, now trying to require as #{namespaced_file}"
|
69
|
-
require namespaced_file
|
70
|
-
rescue LoadError => e2
|
71
|
-
strict_error "Gem loading error: #{e2.message}"
|
72
|
-
end
|
73
|
-
else
|
74
|
-
strict_error "Gem loading error: #{e.message}"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def self.output
|
81
|
-
ENV['BUNDLER_STDERR'] || $stderr
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
data/lib/aeolus/ext/version.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
|
17
|
-
module Aeolus
|
18
|
-
module Ext
|
19
|
-
VERSION = '0.2.0'
|
20
|
-
end
|
21
|
-
end
|
@@ -1,97 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
require 'bundler_ext_helper'
|
17
|
-
|
18
|
-
module Aeolus
|
19
|
-
module Ext
|
20
|
-
describe BundlerExt do
|
21
|
-
before(:each) do
|
22
|
-
@gemfile = 'spec/fixtures/Gemfile.in'
|
23
|
-
end
|
24
|
-
after(:each) do
|
25
|
-
ENV['BUNDLER_EXT_NOSTRICT'] = nil
|
26
|
-
ENV['BUNDLER_EXT_GROUPS'] = nil
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#parse_from_gemfile" do
|
30
|
-
describe "with no group passed in" do
|
31
|
-
it "should return nothing to require" do
|
32
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile)
|
33
|
-
libs.should be_an(Array)
|
34
|
-
libs.should_not include('deltacloud')
|
35
|
-
libs.should_not include('vcr')
|
36
|
-
end
|
37
|
-
end
|
38
|
-
describe "with :all passed in" do
|
39
|
-
it "should return the list of system libraries in all groups to require" do
|
40
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile, :all)
|
41
|
-
libs.should be_an(Array)
|
42
|
-
libs.should include('deltacloud')
|
43
|
-
libs.should include('vcr')
|
44
|
-
end
|
45
|
-
end
|
46
|
-
describe "with group passed in" do
|
47
|
-
it "should not return any deps that are not in the 'development' group" do
|
48
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile,'development')
|
49
|
-
libs.should be_an(Array)
|
50
|
-
libs.should_not include('deltacloud')
|
51
|
-
end
|
52
|
-
it "should return only deps that are in the :test group" do
|
53
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile, :test)
|
54
|
-
libs.should be_an(Array)
|
55
|
-
libs.should_not include('deltacloud')
|
56
|
-
libs.should include('vcr')
|
57
|
-
end
|
58
|
-
it "should return deps from both the :default and :test groups" do
|
59
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile, :default, :test)
|
60
|
-
libs.should be_an(Array)
|
61
|
-
libs.should include('deltacloud')
|
62
|
-
libs.should include('vcr')
|
63
|
-
end
|
64
|
-
end
|
65
|
-
it "should only return deps for the current platform" do
|
66
|
-
libs = BundlerExt.parse_from_gemfile(@gemfile)
|
67
|
-
libs.should be_an(Array)
|
68
|
-
if RUBY_VERSION < "1.9"
|
69
|
-
libs.should_not include('cinch')
|
70
|
-
else
|
71
|
-
libs.should_not include('fastercsv')
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
describe "#system_require" do
|
76
|
-
it "strict mode should fail loading non existing gem" do
|
77
|
-
expect { BundlerExt.system_require(@gemfile, :fail) }.to raise_error
|
78
|
-
end
|
79
|
-
it "non-strict mode should load the libraries in the gemfile" do
|
80
|
-
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
81
|
-
BundlerExt.system_require(@gemfile)
|
82
|
-
defined?(Gem).should be_true
|
83
|
-
end
|
84
|
-
it "non-strict mode should load the libraries in the gemfile" do
|
85
|
-
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
86
|
-
BundlerExt.system_require(@gemfile, :fail)
|
87
|
-
defined?(Gem).should be_true
|
88
|
-
end
|
89
|
-
it "non-strict mode should load the libraries using env var list" do
|
90
|
-
ENV['BUNDLER_EXT_GROUPS'] = 'test development blah'
|
91
|
-
ENV['BUNDLER_EXT_NOSTRICT'] = 'true'
|
92
|
-
defined?(Gem::Command).should be_true
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end
|
data/spec/bundler_ext_helper.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright 2011 Red Hat, Inc.
|
3
|
-
#
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
# you may not use this file except in compliance with the License.
|
6
|
-
# You may obtain a copy of the License at
|
7
|
-
#
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
#
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
# See the License for the specific language governing permissions and
|
14
|
-
# limitations under the License.
|
15
|
-
#
|
16
|
-
#require File.expand_path("../../bundler_ext", __FILE__)
|
17
|
-
require 'aeolus/ext'
|