Add executable parameter to find gem binary in gem module
This is especially needed with rvm where gem binary can be in unusual locations
This commit is contained in:
parent
2921775944
commit
4d334b3c86
1 changed files with 17 additions and 5 deletions
|
@ -57,6 +57,11 @@ options:
|
||||||
required: false
|
required: false
|
||||||
default: "yes"
|
default: "yes"
|
||||||
version_added: "1.3"
|
version_added: "1.3"
|
||||||
|
executable:
|
||||||
|
description:
|
||||||
|
- Override the path to the gem executable
|
||||||
|
required: false
|
||||||
|
version_added: "1.4"
|
||||||
version:
|
version:
|
||||||
description:
|
description:
|
||||||
- Version of the gem to be installed/removed.
|
- Version of the gem to be installed/removed.
|
||||||
|
@ -77,8 +82,14 @@ EXAMPLES = '''
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
def get_rubygems_path(module):
|
||||||
|
if module.params['executable']:
|
||||||
|
return module.params['executable']
|
||||||
|
else:
|
||||||
|
return module.get_bin_path('gem', True)
|
||||||
|
|
||||||
def get_rubygems_version(module):
|
def get_rubygems_version(module):
|
||||||
cmd = [module.get_bin_path('gem', True), '--version']
|
cmd = [get_rubygems_path(module), '--version']
|
||||||
(rc, out, err) = module.run_command(cmd, check_rc=True)
|
(rc, out, err) = module.run_command(cmd, check_rc=True)
|
||||||
|
|
||||||
match = re.match(r'^(\d+)\.(\d+)\.(\d+)', out)
|
match = re.match(r'^(\d+)\.(\d+)\.(\d+)', out)
|
||||||
|
@ -89,7 +100,7 @@ def get_rubygems_version(module):
|
||||||
|
|
||||||
def get_installed_versions(module, remote=False):
|
def get_installed_versions(module, remote=False):
|
||||||
|
|
||||||
cmd = [ module.get_bin_path('gem', True) ]
|
cmd = [ get_rubygems_path(module) ]
|
||||||
cmd.append('query')
|
cmd.append('query')
|
||||||
if remote:
|
if remote:
|
||||||
cmd.append('--remote')
|
cmd.append('--remote')
|
||||||
|
@ -126,7 +137,7 @@ def uninstall(module):
|
||||||
|
|
||||||
if module.check_mode:
|
if module.check_mode:
|
||||||
return
|
return
|
||||||
cmd = [ module.get_bin_path('gem', True) ]
|
cmd = [ get_rubygems_path(module) ]
|
||||||
cmd.append('uninstall')
|
cmd.append('uninstall')
|
||||||
if module.params['version']:
|
if module.params['version']:
|
||||||
cmd.extend([ '--version', module.params['version'] ])
|
cmd.extend([ '--version', module.params['version'] ])
|
||||||
|
@ -146,7 +157,7 @@ def install(module):
|
||||||
else:
|
else:
|
||||||
major = None
|
major = None
|
||||||
|
|
||||||
cmd = [ module.get_bin_path('gem', True) ]
|
cmd = [ get_rubygems_path(module) ]
|
||||||
cmd.append('install')
|
cmd.append('install')
|
||||||
if module.params['version']:
|
if module.params['version']:
|
||||||
cmd.extend([ '--version', module.params['version'] ])
|
cmd.extend([ '--version', module.params['version'] ])
|
||||||
|
@ -170,6 +181,7 @@ def main():
|
||||||
|
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
argument_spec = dict(
|
argument_spec = dict(
|
||||||
|
executable = dict(required=False, type='str'),
|
||||||
gem_source = dict(required=False, type='str'),
|
gem_source = dict(required=False, type='str'),
|
||||||
include_dependencies = dict(required=False, default=True, type='bool'),
|
include_dependencies = dict(required=False, default=True, type='bool'),
|
||||||
name = dict(required=True, type='str'),
|
name = dict(required=True, type='str'),
|
||||||
|
|
Loading…
Reference in a new issue