class EacRubyUtils::Envs::Executable

Attributes

check_args[R]
env[R]
name[R]

Public Class Methods

new(env, name, *check_args) click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 12
def initialize(env, name, *check_args)
  @env = env
  @name = name
  @check_args = check_args
end

Public Instance Methods

command(*command_args) click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 34
def command(*command_args)
  validate!
  env.command(*executable_args, *command_args)
end
executable_args() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 39
def executable_args
  executable_args_from_envvar || [name]
end
executable_args_envvar() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 43
def executable_args_envvar
  "#{name}_command".variableize.upcase
end
executable_args_from_envvar() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 47
def executable_args_from_envvar
  ENV[executable_args_envvar].if_present { |v| ::Shellwords.split(v) }
end
exist?() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 18
def exist?
  exist
end
validate() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 22
def validate
  return nil if exist?

  "Program \"#{::Shellwords.join(executable_args)}\" not found in environment #{env}"
end
validate!() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 28
def validate!
  message = validate

  raise ProgramNotFoundError, message if message
end

Private Instance Methods

exist_uncached() click to toggle source
# File lib/eac_ruby_utils/envs/executable.rb, line 53
def exist_uncached
  env.command(*executable_args, *check_args).execute!
  true
rescue Errno::ENOENT
  false
end