aws_lambda_builders/path_resolver.py (23 lines of code) (raw):
"""
Basic Path Resolver that looks for the executable by runtime first, before proceeding to 'language' in PATH.
"""
from aws_lambda_builders.utils import which
class PathResolver(object):
def __init__(self, binary, runtime, additional_binaries=None, executable_search_paths=None):
self.binary = binary
self.runtime = runtime
self.executables = [self.runtime, self.binary]
self.additional_binaries = additional_binaries
if isinstance(additional_binaries, list):
self.executables = self.executables + self.additional_binaries
self.executable_search_paths = executable_search_paths
def _which(self):
exec_paths = []
for executable in [executable for executable in self.executables if executable is not None]:
paths = which(executable, executable_search_paths=self.executable_search_paths)
exec_paths.extend(paths)
if not exec_paths:
raise ValueError(
"Path resolution for runtime: {} of binary: " "{} was not successful".format(self.runtime, self.binary)
)
return exec_paths
@property
def exec_paths(self):
return self._which()