aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-29 14:49:18 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-03-29 16:37:16 +0200
commit4f34c403980e7f5ae3d5257b742af6fd6452c6cf (patch)
tree7c48ecfa0f1e4eabaf65f353eadb30a1efcdd4df /src
parent784ee35c80774c5f073b6b8be6ab3d4d7e38e2f1 (diff)
Add "nix verify-store" command
Like "nix-store --verify --check-contents", but with the same advantages as "nix verify-paths".
Diffstat (limited to 'src')
-rw-r--r--src/nix/verify.cc66
1 files changed, 53 insertions, 13 deletions
diff --git a/src/nix/verify.cc b/src/nix/verify.cc
index ef3e9fcc2..1bd2a000a 100644
--- a/src/nix/verify.cc
+++ b/src/nix/verify.cc
@@ -10,28 +10,18 @@
using namespace nix;
-struct CmdVerifyPaths : StorePathsCommand
+struct MixVerify : virtual Args
{
bool noContents = false;
bool noSigs = false;
- CmdVerifyPaths()
+ MixVerify()
{
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);
}
- 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
+ void verifyPaths(ref<Store> store, const Paths & storePaths)
{
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>());
+
+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>());