class Komenda::ProcessBuilder

Attributes

command[R]
cwd[R]
env[R]
events[R]
fail_on_fail[R]
use_bundler_env[R]

Public Class Methods

new(command, options = {}) click to toggle source

@param [String, String command @param [Hash] options

# File lib/komenda/process_builder.rb, line 13
def initialize(command, options = {})
  defaults = {
    env: {},
    use_bundler_env: false,
    cwd: nil,
    fail_on_fail: false,
    events: {}
  }
  options = defaults.merge(options)

  self.command = command
  self.env = options[:env]
  self.use_bundler_env = options[:use_bundler_env]
  self.cwd = options[:cwd]
  self.fail_on_fail = options[:fail_on_fail]
  self.events = options[:events]
end

Public Instance Methods

command=(command) click to toggle source

@param [String, Array<String>] command

# File lib/komenda/process_builder.rb, line 37
def command=(command)
  @command = if command.is_a?(Array)
               command.map { |v| String(v) }
             else
               String(command)
             end
end
create() click to toggle source

@return [Komenda::Process]

# File lib/komenda/process_builder.rb, line 32
def create
  Komenda::Process.new(self)
end
cwd=(cwd = nil) click to toggle source

@param [String] cwd

# File lib/komenda/process_builder.rb, line 56
def cwd=(cwd = nil)
  @cwd = cwd.nil? ? nil : String(cwd)
end
env=(env) click to toggle source

@param [Hash] env

# File lib/komenda/process_builder.rb, line 46
def env=(env)
  @env = Hash[env.to_hash.map { |k, v| [String(k), String(v)] }]
end
env_final() click to toggle source

@return [Hash]

# File lib/komenda/process_builder.rb, line 71
def env_final
  env_original.merge(env)
end
events=(events) click to toggle source

@param [Hash<Symbol, Proc>]

# File lib/komenda/process_builder.rb, line 66
def events=(events)
  @events = Hash[events.to_hash.map { |k, v| [k.to_sym, v.to_proc] }]
end
fail_on_fail=(fail_on_fail) click to toggle source

@param [Boolean] fail_on_fail

# File lib/komenda/process_builder.rb, line 61
def fail_on_fail=(fail_on_fail)
  @fail_on_fail = fail_on_fail ? true : false
end
use_bundler_env=(use_bundler_env) click to toggle source

@param [Boolean] use_bundler_env

# File lib/komenda/process_builder.rb, line 51
def use_bundler_env=(use_bundler_env)
  @use_bundler_env = use_bundler_env ? true : false
end

Private Instance Methods

bundler_clean_env() click to toggle source

@return [Hash]

# File lib/komenda/process_builder.rb, line 87
def bundler_clean_env
  env = if Bundler.methods(false).include?(:clean_env)
          Bundler.clean_env
        else
          # For Bundler < 1.12.0
          Bundler.with_clean_env { ENV.to_hash }
        end
  # Work around limitations of `Bundler.clean_env`
  env.delete('BUNDLER_VERSION')
  env.delete('RUBYOPT') if env.key?('RUBYOPT') && env['RUBYOPT'] == ''
  env.delete('RUBYLIB') if env.key?('RUBYLIB') && env['RUBYLIB'] == ''
  env
end
env_original() click to toggle source

@return [Hash]

# File lib/komenda/process_builder.rb, line 78
def env_original
  if !use_bundler_env && Object.const_defined?('Bundler')
    bundler_clean_env
  else
    ENV.to_hash
  end
end