appbundler 0.12.3 → 0.12.4
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 +4 -4
- data/CHANGELOG.md +11 -6
- data/VERSION +1 -1
- data/lib/appbundler/app.rb +54 -44
- data/lib/appbundler/cli.rb +40 -31
- data/lib/appbundler/version.rb +1 -1
- data/spec/appbundler/app_spec.rb +144 -144
- data/spec/fixtures/appbundler-example-app/lib/example_app.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26e3280e87178c94ec01585647a28e6f76052491b1847005d46986d4889ef2f4
|
4
|
+
data.tar.gz: ad2e9e65ae31eadeec4d634ab359bd2f01b8e01dc3e5bb17f8470a6345a26853
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a3910fb29a86a4741d41817ba0d0f9bed3c957d7cdacfdee44b294033e893c63b8b883aead2c923562783bed56c7d49ea16a8d039e018700a057fae103c8e49
|
7
|
+
data.tar.gz: 70b98db9c9c46732fdaa096cb3a94cb5cb507ab64660f798efc2c13cb406f11e0678f276bf134ee82f8a13e2b7d4c320a282c7716b843f038f0ef8e9e0edbbda
|
data/CHANGELOG.md
CHANGED
@@ -2,26 +2,31 @@
|
|
2
2
|
|
3
3
|
This file is used to document the changes between releases of Appbundler
|
4
4
|
|
5
|
-
<!-- latest_release 0.12.
|
6
|
-
## [v0.12.
|
5
|
+
<!-- latest_release 0.12.4 -->
|
6
|
+
## [v0.12.4](https://github.com/chef/appbundler/tree/v0.12.4) (2019-04-24)
|
7
7
|
|
8
8
|
#### Merged Pull Requests
|
9
|
-
-
|
9
|
+
- add --binstub-source option [#53](https://github.com/chef/appbundler/pull/53) ([lamont-granquist](https://github.com/lamont-granquist))
|
10
10
|
<!-- latest_release -->
|
11
11
|
|
12
|
-
<!-- release_rollup since=0.12.
|
12
|
+
<!-- release_rollup since=0.12.3 -->
|
13
13
|
### Changes not yet released to rubygems.org
|
14
14
|
|
15
15
|
#### Merged Pull Requests
|
16
|
-
-
|
16
|
+
- add --binstub-source option [#53](https://github.com/chef/appbundler/pull/53) ([lamont-granquist](https://github.com/lamont-granquist)) <!-- 0.12.4 -->
|
17
17
|
<!-- release_rollup -->
|
18
18
|
|
19
19
|
<!-- latest_stable_release -->
|
20
|
+
## [v0.12.3](https://github.com/chef/appbundler/tree/v0.12.3) (2019-04-17)
|
21
|
+
|
22
|
+
#### Merged Pull Requests
|
23
|
+
- syntax fix [#52](https://github.com/chef/appbundler/pull/52) ([lamont-granquist](https://github.com/lamont-granquist))
|
24
|
+
<!-- latest_stable_release -->
|
25
|
+
|
20
26
|
## [v0.12.2](https://github.com/chef/appbundler/tree/v0.12.2) (2019-04-16)
|
21
27
|
|
22
28
|
#### Merged Pull Requests
|
23
29
|
- fix syntax for cli options [#51](https://github.com/chef/appbundler/pull/51) ([lamont-granquist](https://github.com/lamont-granquist))
|
24
|
-
<!-- latest_stable_release -->
|
25
30
|
|
26
31
|
## [v0.12.1](https://github.com/chef/appbundler/tree/v0.12.1) (2019-04-16)
|
27
32
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.12.
|
1
|
+
0.12.4
|
data/lib/appbundler/app.rb
CHANGED
@@ -86,7 +86,7 @@ module Appbundler
|
|
86
86
|
# of our appbundle calls. But to ship ChefDK 2.0 we just do this.
|
87
87
|
SHITLIST = [
|
88
88
|
"github_changelog_generator",
|
89
|
-
]
|
89
|
+
].freeze
|
90
90
|
|
91
91
|
# This is a check which is equivalent to asking if we are running 2-arg or 3-arg. If
|
92
92
|
# we have an "external_lockfile" that means the chef-dk omnibus Gemfile.lock, e.g.:
|
@@ -111,11 +111,11 @@ module Appbundler
|
|
111
111
|
#
|
112
112
|
def local_gemfile_lock_specs
|
113
113
|
gemfile_lock_specs.map do |s|
|
114
|
-
#if SHITLIST.include?(s.name)
|
114
|
+
# if SHITLIST.include?(s.name)
|
115
115
|
# nil
|
116
|
-
#else
|
117
|
-
|
118
|
-
#end
|
116
|
+
# else
|
117
|
+
safe_resolve_local_gem(s)
|
118
|
+
# end
|
119
119
|
end.compact
|
120
120
|
end
|
121
121
|
|
@@ -129,13 +129,23 @@ module Appbundler
|
|
129
129
|
gem_path = installed_spec.gem_dir
|
130
130
|
# If we're already using that directory, don't copy (it won't work anyway)
|
131
131
|
return if gem_path == File.dirname(gemfile_lock)
|
132
|
-
FileUtils.install(gemfile_lock, gem_path, :
|
132
|
+
FileUtils.install(gemfile_lock, gem_path, mode: 0644)
|
133
133
|
if File.exist?(dot_bundle_dir) && File.directory?(dot_bundle_dir)
|
134
134
|
FileUtils.cp_r(dot_bundle_dir, gem_path)
|
135
135
|
FileUtils.chmod_R("ugo+rX", File.join(gem_path, ".bundle"))
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
+
# This is used to copy the binstubs from the binstub source directory to the actual
|
140
|
+
# binstub location.
|
141
|
+
#
|
142
|
+
def copy_binstubs(binstubs_source)
|
143
|
+
gem_path = installed_spec.gem_dir
|
144
|
+
dst = "#{gem_path}/bin"
|
145
|
+
src = "#{gem_path}/#{binstubs_source}/*"
|
146
|
+
FileUtils.cp_r(Dir.glob(src), dst)
|
147
|
+
end
|
148
|
+
|
139
149
|
# This is the implementation of the 3-arg version of writing the merged lockfiles,
|
140
150
|
# when called with the 2-arg version it short-circuits, however, to the copy_bundler_env
|
141
151
|
# version above.
|
@@ -155,7 +165,7 @@ module Appbundler
|
|
155
165
|
locked_gems = {}
|
156
166
|
|
157
167
|
gemfile_lock_specs.each do |s|
|
158
|
-
#next if SHITLIST.include?(s.name)
|
168
|
+
# next if SHITLIST.include?(s.name)
|
159
169
|
spec = safe_resolve_local_gem(s)
|
160
170
|
next if spec.nil?
|
161
171
|
|
@@ -197,7 +207,7 @@ module Appbundler
|
|
197
207
|
end
|
198
208
|
|
199
209
|
t.close
|
200
|
-
puts IO.read(t.path)
|
210
|
+
puts IO.read(t.path) # debugging
|
201
211
|
Dir.chdir(app_dir) do
|
202
212
|
FileUtils.rm_f "#{app_dir}/Gemfile.lock"
|
203
213
|
Bundler.with_clean_env do
|
@@ -208,7 +218,7 @@ module Appbundler
|
|
208
218
|
FileUtils.mv t.path, "#{app_dir}/Gemfile"
|
209
219
|
end
|
210
220
|
end
|
211
|
-
|
221
|
+
"#{app_dir}/Gemfile"
|
212
222
|
end
|
213
223
|
|
214
224
|
def write_executable_stubs
|
@@ -247,10 +257,10 @@ module Appbundler
|
|
247
257
|
|
248
258
|
def batchfile_stub
|
249
259
|
ruby_relpath_windows = ruby_relative_path.tr("/", '\\')
|
250
|
-
|
251
|
-
@ECHO OFF
|
252
|
-
"%~dp0\\#{ruby_relpath_windows}" "%~dpn0" %*
|
253
|
-
E
|
260
|
+
<<~E
|
261
|
+
@ECHO OFF
|
262
|
+
"%~dp0\\#{ruby_relpath_windows}" "%~dpn0" %*
|
263
|
+
E
|
254
264
|
end
|
255
265
|
|
256
266
|
# Relative path from #target_bin_dir to #ruby. This is used to
|
@@ -288,24 +298,24 @@ E
|
|
288
298
|
# APPBUNDLER_ALLOW_RVM environment variable to "true". This feature
|
289
299
|
# exists to make tests run correctly on travis.ci (which uses rvm).
|
290
300
|
def env_sanitizer
|
291
|
-
|
292
|
-
require "rubygems"
|
293
|
-
|
294
|
-
begin
|
295
|
-
|
296
|
-
|
297
|
-
rescue LoadError
|
298
|
-
|
299
|
-
end
|
301
|
+
<<~EOS
|
302
|
+
require "rubygems"
|
303
|
+
|
304
|
+
begin
|
305
|
+
# this works around rubygems/rubygems#2196 and can be removed in rubygems > 2.7.6
|
306
|
+
require "rubygems/bundler_version_finder"
|
307
|
+
rescue LoadError
|
308
|
+
# probably means rubygems is too old or too new to have this class, and we don't care
|
309
|
+
end
|
300
310
|
|
301
|
-
# avoid appbundling if we are definitely running within a Bundler bundle.
|
302
|
-
# most likely the check for defined?(Bundler) is enough since we don't require
|
303
|
-
# bundler above, but just for paranoia's sake also we test to see if Bundler is
|
304
|
-
# really doing its thing or not.
|
305
|
-
unless defined?(Bundler) && Bundler.instance_variable_defined?("@load")
|
306
|
-
|
307
|
-
|
308
|
-
EOS
|
311
|
+
# avoid appbundling if we are definitely running within a Bundler bundle.
|
312
|
+
# most likely the check for defined?(Bundler) is enough since we don't require
|
313
|
+
# bundler above, but just for paranoia's sake also we test to see if Bundler is
|
314
|
+
# really doing its thing or not.
|
315
|
+
unless defined?(Bundler) && Bundler.instance_variable_defined?("@load")
|
316
|
+
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
317
|
+
::Gem.clear_paths
|
318
|
+
EOS
|
309
319
|
end
|
310
320
|
|
311
321
|
def runtime_activate
|
@@ -325,17 +335,17 @@ EOS
|
|
325
335
|
def load_statement_for(bin_file)
|
326
336
|
name, version = app_spec.name, app_spec.version
|
327
337
|
bin_basename = File.basename(bin_file)
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
else
|
332
|
-
|
333
|
-
end
|
338
|
+
<<~E
|
339
|
+
gem "#{name}", "= #{version}"
|
340
|
+
spec = Gem::Specification.find_by_name("#{name}", "= #{version}")
|
341
|
+
else
|
342
|
+
spec = Gem::Specification.find_by_name("#{name}")
|
343
|
+
end
|
334
344
|
|
335
|
-
bin_file = spec.bin_file("#{bin_basename}")
|
345
|
+
bin_file = spec.bin_file("#{bin_basename}")
|
336
346
|
|
337
|
-
Kernel.load(bin_file)
|
338
|
-
E
|
347
|
+
Kernel.load(bin_file)
|
348
|
+
E
|
339
349
|
end
|
340
350
|
|
341
351
|
def executables
|
@@ -413,12 +423,12 @@ E
|
|
413
423
|
inaccessable_gems = inaccessable_git_sourced_gems
|
414
424
|
return true if inaccessable_gems.empty?
|
415
425
|
|
416
|
-
message =
|
417
|
-
Application '#{name}' contains gems in the lockfile which are
|
418
|
-
not accessible by rubygems. This usually occurs when you fetch gems from git in
|
419
|
-
your Gemfile and do not install the same version of the gems beforehand.
|
426
|
+
message = <<~MESSAGE
|
427
|
+
Application '#{name}' contains gems in the lockfile which are
|
428
|
+
not accessible by rubygems. This usually occurs when you fetch gems from git in
|
429
|
+
your Gemfile and do not install the same version of the gems beforehand.
|
420
430
|
|
421
|
-
MESSAGE
|
431
|
+
MESSAGE
|
422
432
|
|
423
433
|
message << "The Gemfile.lock is located here:\n- #{gemfile_lock}\n\n"
|
424
434
|
|
data/lib/appbundler/cli.rb
CHANGED
@@ -6,49 +6,54 @@ module Appbundler
|
|
6
6
|
class CLI
|
7
7
|
include Mixlib::CLI
|
8
8
|
|
9
|
-
banner(
|
10
|
-
* appbundler #{VERSION} *
|
9
|
+
banner(<<~BANNER)
|
10
|
+
* appbundler #{VERSION} *
|
11
11
|
|
12
|
-
Usage: appbundler BUNDLE_DIR BINSTUB_DIR [GEM_NAME] [GEM_NAME] ...
|
12
|
+
Usage: appbundler BUNDLE_DIR BINSTUB_DIR [GEM_NAME] [GEM_NAME] ...
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
BUNDLE_DIR is the root directory to the bundle containing your app
|
15
|
+
BINSTUB_DIR is the directory where you want generated executables to be written
|
16
|
+
GEM_NAME is the name of a gem you want to appbundle. Default is the directory name
|
17
|
+
of BUNDLE_DIR (e.g. /src/chef -> chef)
|
18
18
|
|
19
|
-
Your bundled application must already be gem installed. Generated binstubs
|
20
|
-
will point to the gem, not your working copy.
|
21
|
-
BANNER
|
19
|
+
Your bundled application must already be gem installed. Generated binstubs
|
20
|
+
will point to the gem, not your working copy.
|
21
|
+
BANNER
|
22
22
|
|
23
23
|
# this is used by chef-dk, its probably not an external API, here be dragons
|
24
24
|
option :without,
|
25
|
-
:
|
26
|
-
:
|
27
|
-
:
|
28
|
-
:
|
25
|
+
long: "--without GROUPS",
|
26
|
+
description: "Comma separated list of groups to exclude when building transitive Gemfile.locks (internal API)",
|
27
|
+
proc: lambda { |o| o.split(/[\s,]+/) },
|
28
|
+
default: []
|
29
|
+
|
30
|
+
option :binstubs_source,
|
31
|
+
long: "--binstubs-source path/to/binstubs",
|
32
|
+
description: "Path to binstubs within the gem to be moved into the bindir",
|
33
|
+
default: nil
|
29
34
|
|
30
35
|
option :extra_bin_files,
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
36
|
+
long: "--extra-bin-files bin1,bin2",
|
37
|
+
description: "Comma separated list of extra binstubs to wire up which are not listed in the gemspec",
|
38
|
+
proc: lambda { |o| o.split(/[\s,]+/) },
|
39
|
+
default: []
|
35
40
|
|
36
41
|
option :version,
|
37
|
-
:
|
38
|
-
:
|
39
|
-
:
|
40
|
-
:
|
41
|
-
:
|
42
|
-
:
|
42
|
+
short: "-v",
|
43
|
+
long: "--version",
|
44
|
+
description: "Show appbundler version",
|
45
|
+
boolean: true,
|
46
|
+
proc: lambda { |v| $stdout.puts("Appbundler Version: #{::Appbundler::VERSION}") },
|
47
|
+
exit: 0
|
43
48
|
|
44
49
|
option :help,
|
45
|
-
:
|
46
|
-
:
|
47
|
-
:
|
48
|
-
:
|
49
|
-
:
|
50
|
-
:
|
51
|
-
:
|
50
|
+
short: "-h",
|
51
|
+
long: "--help",
|
52
|
+
description: "Show this message",
|
53
|
+
on: :tail,
|
54
|
+
boolean: true,
|
55
|
+
show_options: true,
|
56
|
+
exit: 0
|
52
57
|
|
53
58
|
def self.run(argv)
|
54
59
|
cli = new(argv)
|
@@ -111,6 +116,10 @@ BANNER
|
|
111
116
|
end
|
112
117
|
created_lockfile = app.write_merged_lockfiles(without: config[:without])
|
113
118
|
$stdout.puts "Generated merged lockfile at #{created_lockfile}" if created_lockfile
|
119
|
+
if config[:binstubs_source]
|
120
|
+
app.copy_binstubs(config[:binstubs_source])
|
121
|
+
$stdout.puts "Copied binstubs"
|
122
|
+
end
|
114
123
|
end
|
115
124
|
end
|
116
125
|
|
data/lib/appbundler/version.rb
CHANGED
data/spec/appbundler/app_spec.rb
CHANGED
@@ -11,15 +11,15 @@ describe Appbundler do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def double_spec(name, version, dep_names)
|
14
|
-
deps = dep_names.map { |n| double("Bundler::Dependency #{n}", :
|
14
|
+
deps = dep_names.map { |n| double("Bundler::Dependency #{n}", name: n.to_s) }
|
15
15
|
source = double("Bundler::Source::Rubygems")
|
16
|
-
spec = double("Bundler::LazySpecification '#{name}'", :
|
16
|
+
spec = double("Bundler::LazySpecification '#{name}'", name: name.to_s, version: version, dependencies: deps, source: source)
|
17
17
|
all_specs << spec
|
18
18
|
spec
|
19
19
|
end
|
20
20
|
|
21
21
|
def shellout!(cmd)
|
22
|
-
s = Mixlib::ShellOut.new(cmd, :
|
22
|
+
s = Mixlib::ShellOut.new(cmd, env: { "RUBYOPT" => nil, "BUNDLE_GEMFILE" => nil, "APPBUNDLER_ALLOW_RVM" => "true" })
|
23
23
|
s.run_command
|
24
24
|
s.error!
|
25
25
|
s
|
@@ -99,23 +99,23 @@ describe Appbundler do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
it "locks the main app's gem via rubygems, and loads the proper binary" do
|
102
|
-
expected_loading_code =
|
103
|
-
gem "app", "= 1.0.0"
|
102
|
+
expected_loading_code = <<~CODE
|
103
|
+
gem "app", "= 1.0.0"
|
104
104
|
|
105
|
-
spec = Gem::Specification.find_by_name("app", "= 1.0.0")
|
106
|
-
bin_file = spec.bin_file("foo")
|
105
|
+
spec = Gem::Specification.find_by_name("app", "= 1.0.0")
|
106
|
+
bin_file = spec.bin_file("foo")
|
107
107
|
|
108
|
-
Kernel.load(bin_file)
|
109
|
-
CODE
|
108
|
+
Kernel.load(bin_file)
|
109
|
+
CODE
|
110
110
|
expect(app.load_statement_for(bin_path)).to eq(expected_loading_code)
|
111
111
|
end
|
112
112
|
|
113
113
|
it "generates code to override GEM_HOME and GEM_PATH (e.g., rvm)" do
|
114
|
-
expected =
|
115
|
-
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
116
|
-
require "rubygems"
|
117
|
-
::Gem.clear_paths
|
118
|
-
EOS
|
114
|
+
expected = <<~EOS
|
115
|
+
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
116
|
+
require "rubygems"
|
117
|
+
::Gem.clear_paths
|
118
|
+
EOS
|
119
119
|
|
120
120
|
expect(app.env_sanitizer).to eq(expected)
|
121
121
|
expect(app.runtime_activate).to include(expected)
|
@@ -134,10 +134,10 @@ EOS
|
|
134
134
|
end
|
135
135
|
|
136
136
|
it "generates batchfile stub code" do
|
137
|
-
expected_batch_code =
|
138
|
-
@ECHO OFF
|
139
|
-
"%~dp0\\..\\embedded\\bin\\ruby.exe" "%~dpn0" %*
|
140
|
-
E
|
137
|
+
expected_batch_code = <<~E
|
138
|
+
@ECHO OFF
|
139
|
+
"%~dp0\\..\\embedded\\bin\\ruby.exe" "%~dpn0" %*
|
140
|
+
E
|
141
141
|
expect(app.batchfile_stub).to eq(expected_batch_code)
|
142
142
|
end
|
143
143
|
|
@@ -155,8 +155,8 @@ E
|
|
155
155
|
|
156
156
|
# Ensure that the behavior we emulate in our stubs is correct:
|
157
157
|
it "sanity checks rubygems behavior" do
|
158
|
-
expect { Gem::Specification.find_by_name("there-is-no-such-gem-named-this", "= 999.999.999") }
|
159
|
-
to raise_error(Gem::LoadError)
|
158
|
+
expect { Gem::Specification.find_by_name("there-is-no-such-gem-named-this", "= 999.999.999") }
|
159
|
+
.to raise_error(Gem::LoadError)
|
160
160
|
end
|
161
161
|
|
162
162
|
context "and the gems are not accessible by rubygems" do
|
@@ -238,123 +238,123 @@ E
|
|
238
238
|
|
239
239
|
it "generates runtime activation code for the app" do
|
240
240
|
expected_gem_activates = if windows?
|
241
|
-
|
242
|
-
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
243
|
-
require "rubygems"
|
244
|
-
::Gem.clear_paths
|
245
|
-
|
246
|
-
gem "chef", "= 12.4.1"
|
247
|
-
gem "chef-config", "= 12.4.1"
|
248
|
-
gem "mixlib-config", "= 2.2.1"
|
249
|
-
gem "mixlib-shellout", "= 2.2.0"
|
250
|
-
gem "win32-process", "= 0.7.5"
|
251
|
-
gem "ffi", "= 1.9.10"
|
252
|
-
gem "chef-zero", "= 4.3.0"
|
253
|
-
gem "ffi-yajl", "= 2.2.2"
|
254
|
-
gem "libyajl2", "= 1.2.0"
|
255
|
-
gem "hashie", "= 2.1.2"
|
256
|
-
gem "mixlib-log", "= 1.6.0"
|
257
|
-
gem "rack", "= 1.6.4"
|
258
|
-
gem "uuidtools", "= 2.1.5"
|
259
|
-
gem "diff-lcs", "= 1.2.5"
|
260
|
-
gem "erubis", "= 2.7.0"
|
261
|
-
gem "highline", "= 1.7.3"
|
262
|
-
gem "mixlib-authentication", "= 1.3.0"
|
263
|
-
gem "mixlib-cli", "= 1.5.0"
|
264
|
-
gem "net-ssh", "= 2.9.2"
|
265
|
-
gem "net-ssh-multi", "= 1.2.1"
|
266
|
-
gem "net-ssh-gateway", "= 1.2.0"
|
267
|
-
gem "ohai", "= 8.5.1"
|
268
|
-
gem "ipaddress", "= 0.8.0"
|
269
|
-
gem "mime-types", "= 2.6.1"
|
270
|
-
gem "rake", "= 10.1.1"
|
271
|
-
gem "systemu", "= 2.6.5"
|
272
|
-
gem "wmi-lite", "= 1.0.0"
|
273
|
-
gem "plist", "= 3.1.0"
|
274
|
-
gem "pry", "= 0.9.12.6"
|
275
|
-
gem "coderay", "= 1.1.0"
|
276
|
-
gem "method_source", "= 0.8.2"
|
277
|
-
gem "slop", "= 3.4.7"
|
278
|
-
gem "win32console", "= 1.3.2"
|
279
|
-
gem "rspec-core", "= 3.3.2"
|
280
|
-
gem "rspec-support", "= 3.3.0"
|
281
|
-
gem "rspec-expectations", "= 3.3.1"
|
282
|
-
gem "rspec-mocks", "= 3.3.2"
|
283
|
-
gem "rspec_junit_formatter", "= 0.2.3"
|
284
|
-
gem "builder", "= 3.2.2"
|
285
|
-
gem "serverspec", "= 2.23.1"
|
286
|
-
gem "multi_json", "= 1.11.2"
|
287
|
-
gem "rspec", "= 3.3.0"
|
288
|
-
gem "rspec-its", "= 1.2.0"
|
289
|
-
gem "specinfra", "= 2.43.3"
|
290
|
-
gem "net-scp", "= 1.2.1"
|
291
|
-
gem "net-telnet", "= 0.1.1"
|
292
|
-
gem "sfl", "= 2.2"
|
293
|
-
gem "syslog-logger", "= 1.6.8"
|
294
|
-
gem "win32-api", "= 1.5.3"
|
295
|
-
gem "win32-dir", "= 0.5.0"
|
296
|
-
gem "win32-event", "= 0.6.1"
|
297
|
-
gem "win32-ipc", "= 0.6.6"
|
298
|
-
gem "win32-eventlog", "= 0.6.3"
|
299
|
-
gem "win32-mmap", "= 0.4.1"
|
300
|
-
gem "win32-mutex", "= 0.4.2"
|
301
|
-
gem "win32-service", "= 0.8.6"
|
302
|
-
gem "windows-api", "= 0.4.4"
|
303
|
-
gem "windows-pr", "= 1.2.4"
|
304
|
-
E
|
241
|
+
<<~E
|
242
|
+
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
243
|
+
require "rubygems"
|
244
|
+
::Gem.clear_paths
|
245
|
+
|
246
|
+
gem "chef", "= 12.4.1"
|
247
|
+
gem "chef-config", "= 12.4.1"
|
248
|
+
gem "mixlib-config", "= 2.2.1"
|
249
|
+
gem "mixlib-shellout", "= 2.2.0"
|
250
|
+
gem "win32-process", "= 0.7.5"
|
251
|
+
gem "ffi", "= 1.9.10"
|
252
|
+
gem "chef-zero", "= 4.3.0"
|
253
|
+
gem "ffi-yajl", "= 2.2.2"
|
254
|
+
gem "libyajl2", "= 1.2.0"
|
255
|
+
gem "hashie", "= 2.1.2"
|
256
|
+
gem "mixlib-log", "= 1.6.0"
|
257
|
+
gem "rack", "= 1.6.4"
|
258
|
+
gem "uuidtools", "= 2.1.5"
|
259
|
+
gem "diff-lcs", "= 1.2.5"
|
260
|
+
gem "erubis", "= 2.7.0"
|
261
|
+
gem "highline", "= 1.7.3"
|
262
|
+
gem "mixlib-authentication", "= 1.3.0"
|
263
|
+
gem "mixlib-cli", "= 1.5.0"
|
264
|
+
gem "net-ssh", "= 2.9.2"
|
265
|
+
gem "net-ssh-multi", "= 1.2.1"
|
266
|
+
gem "net-ssh-gateway", "= 1.2.0"
|
267
|
+
gem "ohai", "= 8.5.1"
|
268
|
+
gem "ipaddress", "= 0.8.0"
|
269
|
+
gem "mime-types", "= 2.6.1"
|
270
|
+
gem "rake", "= 10.1.1"
|
271
|
+
gem "systemu", "= 2.6.5"
|
272
|
+
gem "wmi-lite", "= 1.0.0"
|
273
|
+
gem "plist", "= 3.1.0"
|
274
|
+
gem "pry", "= 0.9.12.6"
|
275
|
+
gem "coderay", "= 1.1.0"
|
276
|
+
gem "method_source", "= 0.8.2"
|
277
|
+
gem "slop", "= 3.4.7"
|
278
|
+
gem "win32console", "= 1.3.2"
|
279
|
+
gem "rspec-core", "= 3.3.2"
|
280
|
+
gem "rspec-support", "= 3.3.0"
|
281
|
+
gem "rspec-expectations", "= 3.3.1"
|
282
|
+
gem "rspec-mocks", "= 3.3.2"
|
283
|
+
gem "rspec_junit_formatter", "= 0.2.3"
|
284
|
+
gem "builder", "= 3.2.2"
|
285
|
+
gem "serverspec", "= 2.23.1"
|
286
|
+
gem "multi_json", "= 1.11.2"
|
287
|
+
gem "rspec", "= 3.3.0"
|
288
|
+
gem "rspec-its", "= 1.2.0"
|
289
|
+
gem "specinfra", "= 2.43.3"
|
290
|
+
gem "net-scp", "= 1.2.1"
|
291
|
+
gem "net-telnet", "= 0.1.1"
|
292
|
+
gem "sfl", "= 2.2"
|
293
|
+
gem "syslog-logger", "= 1.6.8"
|
294
|
+
gem "win32-api", "= 1.5.3"
|
295
|
+
gem "win32-dir", "= 0.5.0"
|
296
|
+
gem "win32-event", "= 0.6.1"
|
297
|
+
gem "win32-ipc", "= 0.6.6"
|
298
|
+
gem "win32-eventlog", "= 0.6.3"
|
299
|
+
gem "win32-mmap", "= 0.4.1"
|
300
|
+
gem "win32-mutex", "= 0.4.2"
|
301
|
+
gem "win32-service", "= 0.8.6"
|
302
|
+
gem "windows-api", "= 0.4.4"
|
303
|
+
gem "windows-pr", "= 1.2.4"
|
304
|
+
E
|
305
305
|
else
|
306
|
-
|
307
|
-
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
308
|
-
require "rubygems"
|
309
|
-
::Gem.clear_paths
|
310
|
-
|
311
|
-
gem "chef", "= 12.4.1"
|
312
|
-
gem "chef-config", "= 12.4.1"
|
313
|
-
gem "mixlib-config", "= 2.2.1"
|
314
|
-
gem "mixlib-shellout", "= 2.2.0"
|
315
|
-
gem "chef-zero", "= 4.3.0"
|
316
|
-
gem "ffi-yajl", "= 2.2.2"
|
317
|
-
gem "libyajl2", "= 1.2.0"
|
318
|
-
gem "hashie", "= 2.1.2"
|
319
|
-
gem "mixlib-log", "= 1.6.0"
|
320
|
-
gem "rack", "= 1.6.4"
|
321
|
-
gem "uuidtools", "= 2.1.5"
|
322
|
-
gem "diff-lcs", "= 1.2.5"
|
323
|
-
gem "erubis", "= 2.7.0"
|
324
|
-
gem "highline", "= 1.7.3"
|
325
|
-
gem "mixlib-authentication", "= 1.3.0"
|
326
|
-
gem "mixlib-cli", "= 1.5.0"
|
327
|
-
gem "net-ssh", "= 2.9.2"
|
328
|
-
gem "net-ssh-multi", "= 1.2.1"
|
329
|
-
gem "net-ssh-gateway", "= 1.2.0"
|
330
|
-
gem "ohai", "= 8.5.1"
|
331
|
-
gem "ffi", "= 1.9.10"
|
332
|
-
gem "ipaddress", "= 0.8.0"
|
333
|
-
gem "mime-types", "= 2.6.1"
|
334
|
-
gem "rake", "= 10.1.1"
|
335
|
-
gem "systemu", "= 2.6.5"
|
336
|
-
gem "wmi-lite", "= 1.0.0"
|
337
|
-
gem "plist", "= 3.1.0"
|
338
|
-
gem "pry", "= 0.9.12.6"
|
339
|
-
gem "coderay", "= 1.1.0"
|
340
|
-
gem "method_source", "= 0.8.2"
|
341
|
-
gem "slop", "= 3.4.7"
|
342
|
-
gem "rspec-core", "= 3.3.2"
|
343
|
-
gem "rspec-support", "= 3.3.0"
|
344
|
-
gem "rspec-expectations", "= 3.3.1"
|
345
|
-
gem "rspec-mocks", "= 3.3.2"
|
346
|
-
gem "rspec_junit_formatter", "= 0.2.3"
|
347
|
-
gem "builder", "= 3.2.2"
|
348
|
-
gem "serverspec", "= 2.23.1"
|
349
|
-
gem "multi_json", "= 1.11.2"
|
350
|
-
gem "rspec", "= 3.3.0"
|
351
|
-
gem "rspec-its", "= 1.2.0"
|
352
|
-
gem "specinfra", "= 2.43.3"
|
353
|
-
gem "net-scp", "= 1.2.1"
|
354
|
-
gem "net-telnet", "= 0.1.1"
|
355
|
-
gem "sfl", "= 2.2"
|
356
|
-
gem "syslog-logger", "= 1.6.8"
|
357
|
-
E
|
306
|
+
<<~E
|
307
|
+
ENV["GEM_HOME"] = ENV["GEM_PATH"] = nil unless ENV["APPBUNDLER_ALLOW_RVM"] == "true"
|
308
|
+
require "rubygems"
|
309
|
+
::Gem.clear_paths
|
310
|
+
|
311
|
+
gem "chef", "= 12.4.1"
|
312
|
+
gem "chef-config", "= 12.4.1"
|
313
|
+
gem "mixlib-config", "= 2.2.1"
|
314
|
+
gem "mixlib-shellout", "= 2.2.0"
|
315
|
+
gem "chef-zero", "= 4.3.0"
|
316
|
+
gem "ffi-yajl", "= 2.2.2"
|
317
|
+
gem "libyajl2", "= 1.2.0"
|
318
|
+
gem "hashie", "= 2.1.2"
|
319
|
+
gem "mixlib-log", "= 1.6.0"
|
320
|
+
gem "rack", "= 1.6.4"
|
321
|
+
gem "uuidtools", "= 2.1.5"
|
322
|
+
gem "diff-lcs", "= 1.2.5"
|
323
|
+
gem "erubis", "= 2.7.0"
|
324
|
+
gem "highline", "= 1.7.3"
|
325
|
+
gem "mixlib-authentication", "= 1.3.0"
|
326
|
+
gem "mixlib-cli", "= 1.5.0"
|
327
|
+
gem "net-ssh", "= 2.9.2"
|
328
|
+
gem "net-ssh-multi", "= 1.2.1"
|
329
|
+
gem "net-ssh-gateway", "= 1.2.0"
|
330
|
+
gem "ohai", "= 8.5.1"
|
331
|
+
gem "ffi", "= 1.9.10"
|
332
|
+
gem "ipaddress", "= 0.8.0"
|
333
|
+
gem "mime-types", "= 2.6.1"
|
334
|
+
gem "rake", "= 10.1.1"
|
335
|
+
gem "systemu", "= 2.6.5"
|
336
|
+
gem "wmi-lite", "= 1.0.0"
|
337
|
+
gem "plist", "= 3.1.0"
|
338
|
+
gem "pry", "= 0.9.12.6"
|
339
|
+
gem "coderay", "= 1.1.0"
|
340
|
+
gem "method_source", "= 0.8.2"
|
341
|
+
gem "slop", "= 3.4.7"
|
342
|
+
gem "rspec-core", "= 3.3.2"
|
343
|
+
gem "rspec-support", "= 3.3.0"
|
344
|
+
gem "rspec-expectations", "= 3.3.1"
|
345
|
+
gem "rspec-mocks", "= 3.3.2"
|
346
|
+
gem "rspec_junit_formatter", "= 0.2.3"
|
347
|
+
gem "builder", "= 3.2.2"
|
348
|
+
gem "serverspec", "= 2.23.1"
|
349
|
+
gem "multi_json", "= 1.11.2"
|
350
|
+
gem "rspec", "= 3.3.0"
|
351
|
+
gem "rspec-its", "= 1.2.0"
|
352
|
+
gem "specinfra", "= 2.43.3"
|
353
|
+
gem "net-scp", "= 1.2.1"
|
354
|
+
gem "net-telnet", "= 0.1.1"
|
355
|
+
gem "sfl", "= 2.2"
|
356
|
+
gem "syslog-logger", "= 1.6.8"
|
357
|
+
E
|
358
358
|
end
|
359
359
|
expect(app.runtime_activate).to include(expected_gem_activates)
|
360
360
|
end
|
@@ -391,8 +391,8 @@ E
|
|
391
391
|
binary_2 = File.join(target_bindir, "app-binary-2")
|
392
392
|
expect(File.exist?(binary_1)).to be(true)
|
393
393
|
expect(File.exist?(binary_2)).to be(true)
|
394
|
-
expect(File.executable?(binary_1) || File.
|
395
|
-
expect(File.executable?(binary_1) || File.
|
394
|
+
expect(File.executable?(binary_1) || File.exist?(binary_1 + ".bat")).to be(true)
|
395
|
+
expect(File.executable?(binary_1) || File.exist?(binary_1 + ".bat")).to be(true)
|
396
396
|
expect(shellout!(binary_1).stdout.strip).to eq("binary 1 ran")
|
397
397
|
expect(shellout!(binary_2).stdout.strip).to eq("binary 2 ran")
|
398
398
|
end
|
@@ -401,7 +401,7 @@ E
|
|
401
401
|
spec = Gem::Specification.find_by_name("appbundler-example-app", "= 1.0.0")
|
402
402
|
gem_path = spec.gem_dir
|
403
403
|
app.copy_bundler_env
|
404
|
-
expect(File.
|
404
|
+
expect(File.exist?(File.join(gem_path, "Gemfile.lock"))).to be(true)
|
405
405
|
end
|
406
406
|
|
407
407
|
it "copies over .bundler to the gem directory" do
|
@@ -409,7 +409,7 @@ E
|
|
409
409
|
gem_path = spec.gem_dir
|
410
410
|
app.copy_bundler_env
|
411
411
|
expect(File.directory?(File.join(gem_path, ".bundle"))).to be(true)
|
412
|
-
expect(File.
|
412
|
+
expect(File.exist?(File.join(gem_path, ".bundle/config"))).to be(true)
|
413
413
|
end
|
414
414
|
context "and the executable is symlinked to a different directory", :not_supported_on_windows do
|
415
415
|
|
@@ -449,10 +449,10 @@ E
|
|
449
449
|
end
|
450
450
|
|
451
451
|
let(:expected_batch_code) do
|
452
|
-
|
453
|
-
@ECHO OFF
|
454
|
-
"%~dp0\\#{expected_ruby_relpath}" "%~dpn0" %*
|
455
|
-
E
|
452
|
+
<<~E
|
453
|
+
@ECHO OFF
|
454
|
+
"%~dp0\\#{expected_ruby_relpath}" "%~dpn0" %*
|
455
|
+
E
|
456
456
|
end
|
457
457
|
|
458
458
|
before do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appbundler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.12.
|
4
|
+
version: 0.12.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chef Software, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|