diff options
author | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-11-14 19:09:26 (GMT) |
---|---|---|
committer | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-11-14 19:09:26 (GMT) |
commit | 1f603af6e31adb8e171806f914563607fbba446e (patch) | |
tree | 097c54e49b6c410d90ff0c1f892af0de56e06911 /devbot/system.py | |
parent | 4526b912b1e35bfad217a7d4068c7d35b48c7f09 (diff) |
Initial work on autoupdate and autoremove
Diffstat (limited to 'devbot/system.py')
-rw-r--r-- | devbot/system.py | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/devbot/system.py b/devbot/system.py index aa8d3f8..48f33a0 100644 --- a/devbot/system.py +++ b/devbot/system.py @@ -148,7 +148,31 @@ def warn_if_unsupported(distro_name): "distributions listed in the README.\n" \ "*********************************************************\n" -def check(): +def autoremove_packages(packages): + package_manager = distro.get_package_manager() + + to_keep = [] + for package_info in packages.values(): + if distro_name in package_info: + package_list = package_info[distro_name] + if not isinstance(package_list, list): + package_list = [package_list] + + for package in package_list: + if package_info[distro_name] not in to_keep: + to_keep.append(package_info[distro_name]) + + to_keep = package_manager.find_with_deps(to_keep) + all = package_manager.find_all() + + to_remove = [] + for package in all: + if package not in to_keep: + to_remove.append(package) + + package_manager.remove_packages(to_remove) + +def check(autoremove=False, autoupdate=False): distro_name = distro.get_distro_name() packages = config.load_packages() @@ -165,3 +189,10 @@ def check(): apply_distro_tweaks(distro_name) stop_xvfb(xvfb_proc, orig_display) + + if autoupdate: + package_manager = distro.get_package_manager() + package_manager.update() + + if autoremove: + autoremove_packages(packages) |