summaryrefslogtreecommitdiff
path: root/lib/bundler/vendor/thor/lib/thor/actions.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bundler/vendor/thor/lib/thor/actions.rb')
-rw-r--r--lib/bundler/vendor/thor/lib/thor/actions.rb16
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/bundler/vendor/thor/lib/thor/actions.rb b/lib/bundler/vendor/thor/lib/thor/actions.rb
index 39ce67e142..a5368d07f3 100644
--- a/lib/bundler/vendor/thor/lib/thor/actions.rb
+++ b/lib/bundler/vendor/thor/lib/thor/actions.rb
@@ -1,5 +1,3 @@
-require "uri"
-require_relative "core_ext/io_binary_read"
require_relative "actions/create_file"
require_relative "actions/create_link"
require_relative "actions/directory"
@@ -258,13 +256,19 @@ class Bundler::Thor
return if options[:pretend]
- result = config[:capture] ? `#{command}` : system(command.to_s)
+ env_splat = [config[:env]] if config[:env]
- if config[:abort_on_failure]
- success = config[:capture] ? $?.success? : result
- abort unless success
+ if config[:capture]
+ require "open3"
+ result, status = Open3.capture2e(*env_splat, command.to_s)
+ success = status.success?
+ else
+ result = system(*env_splat, command.to_s)
+ success = result
end
+ abort if !success && config.fetch(:abort_on_failure, self.class.exit_on_failure?)
+
result
end