From 732c96f182386d1be00ebf47d332d8c81b878dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Fri, 22 Nov 2019 11:33:29 +0100 Subject: [PATCH] daemon: GC displays how much it has collected. * nix/libstore/gc.cc (LocalStore::deletePathRecursive): Display the percentage reached relative to 'maxFreed', or the total amount of data deleted when 'maxFreed' is ULLONG_MAX. --- nix/libstore/gc.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/nix/libstore/gc.cc b/nix/libstore/gc.cc index fe152da015..7976ff7d76 100644 --- a/nix/libstore/gc.cc +++ b/nix/libstore/gc.cc @@ -11,6 +11,7 @@ #include #include #include +#include namespace nix { @@ -417,7 +418,15 @@ void LocalStore::deletePathRecursive(GCState & state, const Path & path) throw SysError(format("getting status of %1%") % path); } - printMsg(lvlInfo, format("deleting `%1%'") % path); + if (state.options.maxFreed != ULLONG_MAX) { + double fraction = state.results.bytesFreed + size + / state.options.maxFreed; + unsigned int percentage = (fraction > 1. ? 1. : fraction) * 100.; + printMsg(lvlInfo, format("[%1%%%] deleting '%2%'") % percentage % path); + } else { + size_t total = (state.results.bytesFreed + size) / (1024 * 1024); + printMsg(lvlInfo, format("[%1% MiB] deleting '%2%'") % total % path); + } state.results.paths.insert(path);