diff --git a/src/python/OBis/obis/dm/data_mgmt.py b/src/python/OBis/obis/dm/data_mgmt.py index 41972d66bbffec88533ff447380b2c73ef04f9be..f5a93879957ddee4fa76a3c76afa9404ae1148bd 100644 --- a/src/python/OBis/obis/dm/data_mgmt.py +++ b/src/python/OBis/obis/dm/data_mgmt.py @@ -9,6 +9,7 @@ Module implementing data management operations. Created by Chandrasekhar Ramakrishnan on 2017-02-01. Copyright (c) 2017 Chandrasekhar Ramakrishnan. All rights reserved. """ +import subprocess import pybis import abc @@ -45,8 +46,8 @@ def complete_git_config(config): find_git = config['find_git'] if config.get('find_git') else False if find_git: - config['git_path'] = locate_path('git') - config['git_annex_path'] = locate_path('git-annex') + config['git_path'] = locate_command('git') + config['git_annex_path'] = locate_command('git-annex') def default_echo(details): @@ -54,8 +55,10 @@ def default_echo(details): print(details['message']) -def locate_path(command): - return None +def locate_command(command): + """Return a tuple of (returncode, stdout).""" + result = subprocess.run(['type', '-p', command], stdout=subprocess.PIPE) + return result.returncode, result.stdout.decode('utf-8').strip() class AbstractDataMgmt(metaclass=abc.ABCMeta): diff --git a/src/python/OBis/obis/dm/data_mgmt_test.py b/src/python/OBis/obis/dm/data_mgmt_test.py index 140278d13d110cd2287b92ee932b00984c7f9c6f..14fa399e1ab2cd336411be7e303fe6f57f21d25b 100644 --- a/src/python/OBis/obis/dm/data_mgmt_test.py +++ b/src/python/OBis/obis/dm/data_mgmt_test.py @@ -19,3 +19,9 @@ def test_no_git(tmpdir): assert False, "Command should have failed -- no git defined." except ValueError: pass + + +def test_locate_command(): + result = data_mgmt.locate_command("bash") + assert result[0] == 0 + assert result[1] == "/bin/bash"