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