Browse Source

Add "recurse" option to recursively remove dependencies

Sven Velt 8 years ago
parent
commit
38f2908de3
2 changed files with 9 additions and 2 deletions
  1. 2 0
      README
  2. 7 2
      xbps.py

+ 2 - 0
README

@@ -23,6 +23,8 @@ Arguments:
   - state: (present|latest|absent), default: present
     - state of "name" package(s)
 
+  - recurse: (yes|no), default: no
+    - if "state=absent" recursively remove dependencies
 
 Example:
 

+ 7 - 2
xbps.py

@@ -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: