Add "nix verify-store" command

Like "nix-store --verify --check-contents", but with the same
advantages as "nix verify-paths".
This commit is contained in:
Eelco Dolstra 2016-03-29 14:49:18 +02:00
parent 784ee35c80
commit 4f34c40398

View file

@ -10,28 +10,18 @@
using namespace nix; using namespace nix;
struct CmdVerifyPaths : StorePathsCommand struct MixVerify : virtual Args
{ {
bool noContents = false; bool noContents = false;
bool noSigs = false; bool noSigs = false;
CmdVerifyPaths() MixVerify()
{ {
mkFlag(0, "no-contents", "do not verify the contents of each store path", &noContents); mkFlag(0, "no-contents", "do not verify the contents of each store path", &noContents);
mkFlag(0, "no-sigs", "do not verify whether each store path has a valid signature", &noSigs); mkFlag(0, "no-sigs", "do not verify whether each store path has a valid signature", &noSigs);
} }
std::string name() override void verifyPaths(ref<Store> store, const Paths & storePaths)
{
return "verify-paths";
}
std::string description() override
{
return "verify the integrity of store paths";
}
void run(ref<Store> store, Paths storePaths) override
{ {
restoreAffinity(); // FIXME restoreAffinity(); // FIXME
@ -121,4 +111,54 @@ struct CmdVerifyPaths : StorePathsCommand
} }
}; };
struct CmdVerifyPaths : StorePathsCommand, MixVerify
{
CmdVerifyPaths()
{
}
std::string name() override
{
return "verify-paths";
}
std::string description() override
{
return "verify the integrity of store paths";
}
void run(ref<Store> store, Paths storePaths) override
{
verifyPaths(store, storePaths);
}
};
static RegisterCommand r1(make_ref<CmdVerifyPaths>()); static RegisterCommand r1(make_ref<CmdVerifyPaths>());
struct CmdVerifyStore : StoreCommand, MixVerify
{
CmdVerifyStore()
{
}
std::string name() override
{
return "verify-store";
}
std::string description() override
{
return "verify the integrity of all paths in the Nix store";
}
void run(ref<Store> store) override
{
// FIXME: use store->verifyStore()?
PathSet validPaths = store->queryAllValidPaths();
verifyPaths(store, Paths(validPaths.begin(), validPaths.end()));
}
};
static RegisterCommand r2(make_ref<CmdVerifyStore>());