diff --git a/library/cpanm b/library/packaging/cpanm similarity index 87% rename from library/cpanm rename to library/packaging/cpanm index ff52406df0..5f5ae98022 100644 --- a/library/cpanm +++ b/library/packaging/cpanm @@ -69,12 +69,12 @@ notes: author: Franck Cuny ''' -def _is_package_installed(name, locallib, cpanm): +def _is_package_installed(module, name, locallib, cpanm): cmd = "" if locallib: cmd = "PERL5LIB={locallib}/lib/perl5".format(locallib=locallib) cmd = "{cmd} perl -M{name} -e '1'".format(cmd=cmd, name=name) - res, stdout, stderr = _run(cmd) + res, stdout, stderr = module.run_command(cmd, check_rc=False) installed = True if res == 0 else False return installed @@ -97,18 +97,11 @@ def _build_cmd_line(name, from_path, notest, locallib, mirror, cpanm): return cmd -def _run(cmd): - process = subprocess.Popen(cmd, stdout=subprocess.PIPE, - stderr=subprocess.PIPE, shell=True) - stdout, stderr = process.communicate() - return (process.returncode, stdout, stderr) - - def main(): arg_spec = dict( name=dict(default=None, required=False, aliases=['pkg']), from_path=dict(default=None, required=False), - notest=dict(default=False, choices=BOOLEANS), + notest=dict(default=False, type='bool'), locallib=dict(default=None, required=False), mirror=dict(default=None, required=False) ) @@ -124,16 +117,17 @@ def main(): from_path = module.params['from_path'] notest = module.boolean(module.params.get('notest', False)) locallib = module.params['locallib'] + mirror = module.params['mirror'] changed = False - installed = _is_package_installed(name, locallib, cpanm) + installed = _is_package_installed(module, name, locallib, cpanm) if not installed: out_cpanm = err_cpanm = '' cmd = _build_cmd_line(name, from_path, notest, locallib, mirror, cpanm) - rc_cpanm, out_cpanm, err_cpanm = _run(cmd) + rc_cpanm, out_cpanm, err_cpanm = module.run_command(cmd, check_rc=False) if rc_cpanm != 0: module.fail_json(msg=err_cpanm, cmd=cmd) @@ -144,6 +138,7 @@ def main(): module.exit_json(changed=changed, binary=cpanm, name=name) -# include magic from lib/ansible/module_common.py -#<> +# import module snippets +from ansible.module_utils.basic import * + main()