|
@@ -123,12 +123,16 @@ def ensure_packages_state(module, paths, pkgs, desired_state):
|
|
|
if not pkgs2do:
|
|
|
module.exit_json(msg='All packages in desired state')
|
|
|
|
|
|
+ additional_options = []
|
|
|
+
|
|
|
if desired_state in ['present', 'latest']:
|
|
|
cmdtype = 'install'
|
|
|
elif desired_state == 'absent':
|
|
|
cmdtype = 'remove'
|
|
|
+ if module.params['recurse']:
|
|
|
+ additional_options.append('-R')
|
|
|
|
|
|
- cmd = '%s -y %s' % (paths[cmdtype], ' '.join(pkgs2do))
|
|
|
+ cmd = '%s %s -y %s' % (paths[cmdtype], ' '.join(additional_options), ' '.join(pkgs2do))
|
|
|
rc, sout, serr = module.run_command(cmd, check_rc=False)
|
|
|
|
|
|
if rc == 0:
|
|
@@ -150,6 +154,7 @@ def main():
|
|
|
name = dict(aliases=['pkg', 'package'], type='list'),
|
|
|
state = dict(default='present', choices=['present', 'installed', "latest", 'absent', 'removed']),
|
|
|
force = dict(default=False, type='bool'),
|
|
|
+ recurse = dict(default=False, type='bool'),
|
|
|
upgrade = dict(default=False, type='bool'),
|
|
|
update_cache = dict(default=False, aliases=['update-cache'], type='bool')
|
|
|
),
|
|
@@ -185,7 +190,7 @@ def main():
|
|
|
|
|
|
# update/upgrade all installed packages
|
|
|
if p['upgrade']:
|
|
|
- (upg_avail, upg_successful) = upgrade(module, paths, module.check_mode)
|
|
|
+ (upg_avail, upg_successful) = upgrade(module, paths, module.check_mode)
|
|
|
if not p['name']: # upgrade is last action
|
|
|
if upg_avail:
|
|
|
if upg_successful:
|