From 99851c6f06c80fe2222c5e5fcef963804e907170 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 14 Apr 2016 21:14:29 +0200 Subject: [PATCH] Unify "nix verify-paths" and "nix verify-store" "verify-store" is now simply an "--all" flag to "nix verify". This flag can be used for any other store path command as well (e.g. "nix path-info", "nix copy-sigs", ...). --- src/nix/command.cc | 22 +++++++++++---- src/nix/command.hh | 1 + src/nix/verify.cc | 68 ++++++++++------------------------------------ 3 files changed, 31 insertions(+), 60 deletions(-) diff --git a/src/nix/command.cc b/src/nix/command.cc index a89246a93..986953fd8 100644 --- a/src/nix/command.cc +++ b/src/nix/command.cc @@ -73,18 +73,28 @@ StorePathsCommand::StorePathsCommand() { expectArgs("paths", &storePaths); mkFlag('r', "recursive", "apply operation to closure of the specified paths", &recursive); + mkFlag(0, "all", "apply operation to the entire store", &all); } void StorePathsCommand::run(ref store) { - for (auto & storePath : storePaths) - storePath = followLinksToStorePath(storePath); + if (all) { + if (storePaths.size()) + throw UsageError("‘--all’ does not expect arguments"); + for (auto & p : store->queryAllValidPaths()) + storePaths.push_back(p); + } - if (recursive) { - PathSet closure; + else { for (auto & storePath : storePaths) - store->computeFSClosure(storePath, closure, false, false); - storePaths = store->topoSortPaths(closure); + storePath = followLinksToStorePath(storePath); + + if (recursive) { + PathSet closure; + for (auto & storePath : storePaths) + store->computeFSClosure(storePath, closure, false, false); + storePaths = store->topoSortPaths(closure); + } } run(store, storePaths); diff --git a/src/nix/command.hh b/src/nix/command.hh index 8397244ca..a6adb5f65 100644 --- a/src/nix/command.hh +++ b/src/nix/command.hh @@ -31,6 +31,7 @@ private: Paths storePaths; bool recursive = false; + bool all = false; public: diff --git a/src/nix/verify.cc b/src/nix/verify.cc index 9214d3b65..39a4395cf 100644 --- a/src/nix/verify.cc +++ b/src/nix/verify.cc @@ -10,14 +10,14 @@ using namespace nix; -struct MixVerify : virtual Args +struct CmdVerify : StorePathsCommand { bool noContents = false; bool noTrust = false; Strings substituterUris; size_t sigsNeeded; - MixVerify() + CmdVerify() { mkFlag(0, "no-contents", "do not verify the contents of each store path", &noContents); mkFlag(0, "no-trust", "do not verify whether each store path is trusted", &noTrust); @@ -26,7 +26,17 @@ struct MixVerify : virtual Args mkIntFlag('n', "sigs-needed", "require that each path has at least N valid signatures", &sigsNeeded); } - void verifyPaths(ref store, const Paths & storePaths) + std::string name() override + { + return "verify"; + } + + std::string description() override + { + return "verify the integrity of store paths"; + } + + void run(ref store, Paths storePaths) override { restoreAffinity(); // FIXME @@ -158,54 +168,4 @@ struct MixVerify : virtual Args } }; -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, Paths storePaths) override - { - verifyPaths(store, storePaths); - } -}; - -static RegisterCommand r1(make_ref()); - -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) override - { - // FIXME: use store->verifyStore()? - - PathSet validPaths = store->queryAllValidPaths(); - - verifyPaths(store, Paths(validPaths.begin(), validPaths.end())); - } -}; - -static RegisterCommand r2(make_ref()); +static RegisterCommand r1(make_ref());