Implement a '_get_easy_install' helper function to find the desired

'easy_install' executable, modeled on '_get_pip'
from the 'pip' module to correctly handle all combinations of explicit
executable and virtualenv.
This commit is contained in:
Pedro Romano 2013-08-26 10:02:54 +01:00 committed by Michael DeHaan
parent 1391add126
commit c73d8012b4

View file

@ -19,6 +19,8 @@
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
#
import os.path
DOCUMENTATION = '''
---
module: easy_install
@ -92,13 +94,39 @@ def _is_package_installed(module, name, easy_install):
return not ('Reading' in status_stdout or 'Downloading' in status_stdout)
def _get_easy_install(module, env=None, executable=None):
candidate_easy_inst_basenames = ['easy_install']
easy_install = None
if executable is not None:
if os.path.isabs(executable):
easy_install = executable
else:
candidate_easy_inst_basenames.insert(0, executable)
if easy_install is None:
if env is None:
opt_dirs = []
else:
# Try easy_install with the virtualenv directory first.
opt_dirs = ['%s/bin' % env]
for basename in candidate_easy_inst_basenames:
easy_install = module.get_bin_path(basename, False, opt_dirs)
if easy_install is not None:
break
# easy_install should have been found by now. The final call to
# get_bin_path will trigger fail_json.
if easy_install is None:
basename = candidate_easy_inst_basenames[0]
easy_install = module.get_bin_path(basename, True, opt_dirs)
return easy_install
def main():
arg_spec = dict(
name=dict(required=True),
virtualenv=dict(default=None, required=False),
virtualenv_site_packages=dict(default='no', type='bool'),
virtualenv_command=dict(default='virtualenv', required=False),
executable=dict(default='easy_install', required=False),
executable=dict(default=None, required=False),
)
module = AnsibleModule(argument_spec=arg_spec, supports_check_mode=True)
@ -106,6 +134,8 @@ def main():
name = module.params['name']
env = module.params['virtualenv']
easy_install = module.get_bin_path(module.params['executable'], True, ['%s/bin' % env])
executable = module.params['executable']
easy_install = _get_easy_install(module, env, executable)
site_packages = module.params['virtualenv_site_packages']
virtualenv_command = module.params['virtualenv_command']