class JetBlack::Session
Attributes
commands[R]
directory[R]
file_helper[R]
session_options[R]
Public Class Methods
new(options: {})
click to toggle source
# File lib/jet_black/session.rb, line 22 def initialize(options: {}) @commands = [] @session_options = options @directory = File.realpath(Dir.mktmpdir("jet_black")) @file_helper = FileHelper.new(directory) end
Public Instance Methods
run(command, stdin: nil, env: {}, options: {})
click to toggle source
# File lib/jet_black/session.rb, line 29 def run(command, stdin: nil, env: {}, options: {}) exec_non_interactive(raw_command: command, stdin: stdin, raw_env: env, options: options).tap do |executed_command| commands << executed_command end end
run_interactive(command, env: {}, options: {}, &block)
click to toggle source
# File lib/jet_black/session.rb, line 35 def run_interactive(command, env: {}, options: {}, &block) exec_interactive(raw_command: command, raw_env: env, options: options, block: block).tap do |executed_command| commands << executed_command end end
Private Instance Methods
bundler_clean_environment_method()
click to toggle source
# File lib/jet_black/session.rb, line 69 def bundler_clean_environment_method # Bundler 2.x if Bundler.respond_to?(:with_unbundled_env) :with_unbundled_env else :with_clean_env end end
exec_interactive(raw_command:, raw_env:, options:, block:)
click to toggle source
# File lib/jet_black/session.rb, line 53 def exec_interactive(raw_command:, raw_env:, options:, block:) combined_options = session_options.merge(options) execution_context(combined_options) do InteractiveCommand.new.call(raw_command: raw_command, raw_env: raw_env, directory: directory, block: block) end end
exec_non_interactive(raw_command:, stdin:, raw_env:, options:)
click to toggle source
# File lib/jet_black/session.rb, line 45 def exec_non_interactive(raw_command:, stdin:, raw_env:, options:) combined_options = session_options.merge(options) execution_context(combined_options) do NonInteractiveCommand.new.call(raw_command: raw_command, stdin: stdin, raw_env: raw_env, directory: directory) end end
execution_context(options) { || ... }
click to toggle source
# File lib/jet_black/session.rb, line 61 def execution_context(options) if options[:clean_bundler_env] Bundler.public_send(bundler_clean_environment_method) { yield } else yield end end