class EacRubyUtils::Envs::Executable
def auto_validate?
def auto_validate? options.key?(OPTION_AUTO_VALIDATE) ? options[OPTION_AUTO_VALIDATE] : DEFAULT_AUTO_VALIDATE end
def check_args
def check_args options[OPTION_CHECK_ARGS] end
def command(*command_args)
def command(*command_args) validate! if auto_validate? env.command(*executable_args, *command_args) end
def executable_args
def executable_args executable_args_from_envvar || executable_args_from_options || executable_args_from_name end
def executable_args_envvar
def executable_args_envvar "#{name}_command".variableize.upcase end
def executable_args_from_envvar
def executable_args_from_envvar ENV[executable_args_envvar].if_present { |v| ::Shellwords.split(v) } end
def executable_args_from_name
-
(Enumerable
-)
def executable_args_from_name ::Shellwords.split(name) end
def executable_args_from_options
-
(Enumerable
-)
def executable_args_from_options options[OPTION_EXEC_ARGS].if_present do |v| v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v.to_s) end end
def exist?
def exist? exist end
def exist_uncached
def exist_uncached env.command(*executable_args, *check_args).execute! true rescue Errno::ENOENT false end
def initialize(env, name, *check_args)
def initialize(env, name, *check_args) @env = env @name = name self.options = self.class.lists.option.hash_keys_validate!(check_args.extract_options!) options[OPTION_CHECK_ARGS] = check_args unless options.key?(OPTION_CHECK_ARGS) options.freeze end
def validate
def validate return nil if exist? "Program \"#{::Shellwords.join(executable_args)}\" not found in environment #{env}" end
def validate!
def validate! message = validate raise ProgramNotFoundError, message if message end