mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-03 20:54:24 -07:00
Pip: Make main method smaller (#38788)
This commit is contained in:
parent
5eb6e3c611
commit
42953c40ce
1 changed files with 48 additions and 43 deletions
|
@ -342,6 +342,53 @@ def _get_package_info(module, package, env=None):
|
||||||
return formatted_dep
|
return formatted_dep
|
||||||
|
|
||||||
|
|
||||||
|
def setup_virtualenv(module, env, chdir, out, err):
|
||||||
|
if module.check_mode:
|
||||||
|
module.exit_json(changed=True)
|
||||||
|
|
||||||
|
cmd = module.params['virtualenv_command']
|
||||||
|
if os.path.basename(cmd) == cmd:
|
||||||
|
cmd = module.get_bin_path(cmd, True)
|
||||||
|
|
||||||
|
if module.params['virtualenv_site_packages']:
|
||||||
|
cmd += ' --system-site-packages'
|
||||||
|
else:
|
||||||
|
cmd_opts = _get_cmd_options(module, cmd)
|
||||||
|
if '--no-site-packages' in cmd_opts:
|
||||||
|
cmd += ' --no-site-packages'
|
||||||
|
|
||||||
|
virtualenv_python = module.params['virtualenv_python']
|
||||||
|
# -p is a virtualenv option, not compatible with pyenv or venv
|
||||||
|
# this if validates if the command being used is not any of them
|
||||||
|
if not any(ex in module.params['virtualenv_command'] for ex in ('pyvenv', '-m venv')):
|
||||||
|
if virtualenv_python:
|
||||||
|
cmd += ' -p%s' % virtualenv_python
|
||||||
|
elif PY3:
|
||||||
|
# Ubuntu currently has a patch making virtualenv always
|
||||||
|
# try to use python2. Since Ubuntu16 works without
|
||||||
|
# python2 installed, this is a problem. This code mimics
|
||||||
|
# the upstream behaviour of using the python which invoked
|
||||||
|
# virtualenv to determine which python is used inside of
|
||||||
|
# the virtualenv (when none are specified).
|
||||||
|
cmd += ' -p%s' % sys.executable
|
||||||
|
|
||||||
|
# if venv or pyvenv are used and virtualenv_python is defined, then
|
||||||
|
# virtualenv_python is ignored, this has to be acknowledged
|
||||||
|
elif module.params['virtualenv_python']:
|
||||||
|
module.fail_json(
|
||||||
|
msg='virtualenv_python should not be used when'
|
||||||
|
' using the venv module or pyvenv as virtualenv_command'
|
||||||
|
)
|
||||||
|
|
||||||
|
cmd = "%s %s" % (cmd, env)
|
||||||
|
rc, out_venv, err_venv = module.run_command(cmd, cwd=chdir)
|
||||||
|
out += out_venv
|
||||||
|
err += err_venv
|
||||||
|
if rc != 0:
|
||||||
|
_fail(module, cmd, out, err)
|
||||||
|
return out, err
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
state_map = dict(
|
state_map = dict(
|
||||||
present='install',
|
present='install',
|
||||||
|
@ -377,7 +424,6 @@ def main():
|
||||||
version = module.params['version']
|
version = module.params['version']
|
||||||
requirements = module.params['requirements']
|
requirements = module.params['requirements']
|
||||||
extra_args = module.params['extra_args']
|
extra_args = module.params['extra_args']
|
||||||
virtualenv_python = module.params['virtualenv_python']
|
|
||||||
chdir = module.params['chdir']
|
chdir = module.params['chdir']
|
||||||
umask = module.params['umask']
|
umask = module.params['umask']
|
||||||
env = module.params['virtualenv']
|
env = module.params['virtualenv']
|
||||||
|
@ -410,48 +456,7 @@ def main():
|
||||||
if env:
|
if env:
|
||||||
if not os.path.exists(os.path.join(env, 'bin', 'activate')):
|
if not os.path.exists(os.path.join(env, 'bin', 'activate')):
|
||||||
venv_created = True
|
venv_created = True
|
||||||
if module.check_mode:
|
out, err = setup_virtualenv(module, env, chdir, out, err)
|
||||||
module.exit_json(changed=True)
|
|
||||||
|
|
||||||
cmd = module.params['virtualenv_command']
|
|
||||||
if os.path.basename(cmd) == cmd:
|
|
||||||
cmd = module.get_bin_path(cmd, True)
|
|
||||||
|
|
||||||
if module.params['virtualenv_site_packages']:
|
|
||||||
cmd += ' --system-site-packages'
|
|
||||||
else:
|
|
||||||
cmd_opts = _get_cmd_options(module, cmd)
|
|
||||||
if '--no-site-packages' in cmd_opts:
|
|
||||||
cmd += ' --no-site-packages'
|
|
||||||
|
|
||||||
# -p is a virtualenv option, not compatible with pyenv or venv
|
|
||||||
# this if validates if the command being used is not any of them
|
|
||||||
if not any(ex in module.params['virtualenv_command'] for ex in ('pyvenv', '-m venv')):
|
|
||||||
if virtualenv_python:
|
|
||||||
cmd += ' -p%s' % virtualenv_python
|
|
||||||
elif PY3:
|
|
||||||
# Ubuntu currently has a patch making virtualenv always
|
|
||||||
# try to use python2. Since Ubuntu16 works without
|
|
||||||
# python2 installed, this is a problem. This code mimics
|
|
||||||
# the upstream behaviour of using the python which invoked
|
|
||||||
# virtualenv to determine which python is used inside of
|
|
||||||
# the virtualenv (when none are specified).
|
|
||||||
cmd += ' -p%s' % sys.executable
|
|
||||||
|
|
||||||
# if venv or pyvenv are used and virtualenv_python is defined, then
|
|
||||||
# virtualenv_python is ignored, this has to be acknowledged
|
|
||||||
elif module.params['virtualenv_python']:
|
|
||||||
module.fail_json(
|
|
||||||
msg='virtualenv_python should not be used when'
|
|
||||||
' using the venv module or pyvenv as virtualenv_command'
|
|
||||||
)
|
|
||||||
|
|
||||||
cmd = "%s %s" % (cmd, env)
|
|
||||||
rc, out_venv, err_venv = module.run_command(cmd, cwd=chdir)
|
|
||||||
out += out_venv
|
|
||||||
err += err_venv
|
|
||||||
if rc != 0:
|
|
||||||
_fail(module, cmd, out, err)
|
|
||||||
|
|
||||||
pip = _get_pip(module, env, module.params['executable'])
|
pip = _get_pip(module, env, module.params['executable'])
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue