patman: Add a function to find a tool on the path

The Run() function automatically uses the PATH variable to locate a tool
when running it. Add a function that does this manually, so we don't have
to run a tool to find out if it is present.

This is needed by the new Bintool class, which wants to check which tools
are present.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2022-01-09 20:13:43 -07:00
parent 5b7968693f
commit 596fd10a79

View File

@@ -378,6 +378,29 @@ def run_result(name, *args, **kwargs):
raise ValueError(msg)
raise
def tool_find(name):
"""Search the current path for a tool
This uses both PATH and any value from SetToolPaths() to search for a tool
Args:
name (str): Name of tool to locate
Returns:
str: Full path to tool if found, else None
"""
name = os.path.expanduser(name) # Expand paths containing ~
paths = []
pathvar = os.environ.get('PATH')
if pathvar:
paths = pathvar.split(':')
if tool_search_paths:
paths += tool_search_paths
for path in paths:
fname = os.path.join(path, name)
if os.path.isfile(fname) and os.access(fname, os.X_OK):
return fname
def Run(name, *args, **kwargs):
"""Run a tool with some arguments