diff options
Diffstat (limited to 'src/nix-store/nix-store.cc')
-rw-r--r-- | src/nix-store/nix-store.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc index d3a707f0d..ce415ce4a 100644 --- a/src/nix-store/nix-store.cc +++ b/src/nix-store/nix-store.cc @@ -734,6 +734,21 @@ static void opVerifyPath(Strings opFlags, Strings opArgs) } +/* Repair the contents of the given path by redownloading it using a + substituter (if available). */ +static void opRepairPath(Strings opFlags, Strings opArgs) +{ + if (!opFlags.empty()) + throw UsageError("no flags expected"); + + foreach (Strings::iterator, i, opArgs) { + Path path = followLinksToStorePath(*i); + printMsg(lvlTalkative, format("repairing path `%1%'...") % path); + ensureLocalStore().repairPath(path); + } +} + + static void showOptimiseStats(OptimiseStats & stats) { printMsg(lvlError, @@ -834,6 +849,8 @@ void run(Strings args) op = opVerify; else if (arg == "--verify-path") op = opVerifyPath; + else if (arg == "--repair-path") + op = opRepairPath; else if (arg == "--optimise") op = opOptimise; else if (arg == "--query-failed-paths") |