forked from lix-project/lix
46 lines
1 KiB
C++
46 lines
1 KiB
C++
|
#include "command.hh"
|
||
|
#include "common-args.hh"
|
||
|
#include "shared.hh"
|
||
|
#include "store-api.hh"
|
||
|
|
||
|
using namespace nix;
|
||
|
|
||
|
struct CmdStoreDelete : StorePathsCommand
|
||
|
{
|
||
|
GCOptions options { .action = GCOptions::gcDeleteSpecific };
|
||
|
|
||
|
CmdStoreDelete()
|
||
|
{
|
||
|
addFlag({
|
||
|
.longName = "ignore-liveness",
|
||
|
.description = "do not check whether the paths are reachable from a root",
|
||
|
.handler = {&options.ignoreLiveness, true}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
std::string description() override
|
||
|
{
|
||
|
return "delete paths from the Nix store";
|
||
|
}
|
||
|
|
||
|
std::string doc() override
|
||
|
{
|
||
|
return
|
||
|
#include "store-delete.md"
|
||
|
;
|
||
|
}
|
||
|
|
||
|
void run(ref<Store> store, std::vector<StorePath> storePaths) override
|
||
|
{
|
||
|
|
||
|
for (auto & path : storePaths)
|
||
|
options.pathsToDelete.insert(path);
|
||
|
|
||
|
GCResults results;
|
||
|
PrintFreed freed(true, results);
|
||
|
store->collectGarbage(options, results);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
static auto rCmdStoreDelete = registerCommand2<CmdStoreDelete>({"store", "delete"});
|