From 007a3fe1542a12d647d77a8dca4a43a3a86c22f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mickae=CC=88l=20Re=CC=81mond?= Date: Tue, 15 Oct 2013 09:08:33 +0200 Subject: [PATCH] Add executable parameter to find gem binary in gem module This is especially needed with rvm where gem binary can be in unusual locations --- library/packaging/gem | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/library/packaging/gem b/library/packaging/gem index 2741dd90406..0a5bbbe8229 100644 --- a/library/packaging/gem +++ b/library/packaging/gem @@ -57,6 +57,11 @@ options: required: false default: "yes" version_added: "1.3" + executable: + description: + - Override the path to the gem executable + required: false + version_added: "1.4" version: description: - Version of the gem to be installed/removed. @@ -77,8 +82,14 @@ EXAMPLES = ''' 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): - cmd = [module.get_bin_path('gem', True), '--version'] + cmd = [get_rubygems_path(module), '--version'] (rc, out, err) = module.run_command(cmd, check_rc=True) match = re.match(r'^(\d+)\.(\d+)\.(\d+)', out) @@ -89,7 +100,7 @@ def get_rubygems_version(module): def get_installed_versions(module, remote=False): - cmd = [ module.get_bin_path('gem', True) ] + cmd = [ get_rubygems_path(module) ] cmd.append('query') if remote: cmd.append('--remote') @@ -126,7 +137,7 @@ def uninstall(module): if module.check_mode: return - cmd = [ module.get_bin_path('gem', True) ] + cmd = [ get_rubygems_path(module) ] cmd.append('uninstall') if module.params['version']: cmd.extend([ '--version', module.params['version'] ]) @@ -146,7 +157,7 @@ def install(module): else: major = None - cmd = [ module.get_bin_path('gem', True) ] + cmd = [ get_rubygems_path(module) ] cmd.append('install') if module.params['version']: cmd.extend([ '--version', module.params['version'] ]) @@ -160,7 +171,7 @@ def install(module): if module.params['user_install']: cmd.append('--user-install') else: - cmd.append('--no-user-install') + cmd.append('--no-user-install') cmd.append('--no-rdoc') cmd.append('--no-ri') cmd.append(module.params['gem_source']) @@ -170,6 +181,7 @@ def main(): module = AnsibleModule( argument_spec = dict( + executable = dict(required=False, type='str'), gem_source = dict(required=False, type='str'), include_dependencies = dict(required=False, default=True, type='bool'), name = dict(required=True, type='str'),