diff --git a/bauh/commons/system.py b/bauh/commons/system.py index 20eb0aff..4d05ea45 100644 --- a/bauh/commons/system.py +++ b/bauh/commons/system.py @@ -63,7 +63,7 @@ class SystemProcess: class SimpleProcess: - def __init__(self, cmd: List[str], cwd: str = '.', expected_code: int = None, + def __init__(self, cmd: List[str], cwd: str = '.', expected_code: int = 0, global_interpreter: bool = USE_GLOBAL_INTERPRETER, lang: str = DEFAULT_LANG, root_password: str = None, extra_paths: Set[str] = None, error_phrases: Set[str] = None): pwdin, final_cmd = None, [] @@ -179,7 +179,7 @@ class ProcessHandler: proc.instance.wait() output.seek(0) - success = proc.instance.returncode == proc.expected_code, + success = proc.instance.returncode == proc.expected_code string_output = output.read() if proc.error_phrases: diff --git a/bauh/gems/arch/controller.py b/bauh/gems/arch/controller.py index b30484a0..c1d12f09 100644 --- a/bauh/gems/arch/controller.py +++ b/bauh/gems/arch/controller.py @@ -2163,10 +2163,17 @@ class ArchManager(SoftwareManager): body=text, confirmation_label=self.i18n['clean'].capitalize(), deny_label=self.i18n['cancel'].capitalize()): - rm = SimpleProcess(cmd=['rm', '-rf', '{}/*'.format(cache_dir)], root_password=root_password) handler = ProcessHandler(watcher) - success, output = handler.handle_simple(rm) + success = True + for f in glob.glob('{}/*'.format(cache_dir)): + rm = SimpleProcess(cmd=['rm', '-rf', f], root_password=root_password) + + success, _ = handler.handle_simple(rm) + + if not success: + success = False + break if success: watcher.show_message(title=self.i18n['arch.custom_action.clean_cache'].capitalize(), diff --git a/bauh/gems/arch/pacman.py b/bauh/gems/arch/pacman.py index 75c1c425..1b9550c8 100644 --- a/bauh/gems/arch/pacman.py +++ b/bauh/gems/arch/pacman.py @@ -838,7 +838,13 @@ def get_cache_dir() -> str: if not string.strip().startswith('#'): cache_dirs.append(string.split('=')[1].strip()) - return cache_dirs[-1] if cache_dirs else '/var/cache/pacman/pkg/' + if cache_dirs: + if cache_dirs[-1][-1] == '/': + return cache_dirs[-1][0:-1] + else: + return cache_dirs[-1] + else: + return '/var/cache/pacman/pkg' def map_required_by(names: Iterable[str]) -> Dict[str, Set[str]]: