diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-04-14 21:14:29 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-04-15 15:39:48 +0200 |
commit | 99851c6f06c80fe2222c5e5fcef963804e907170 (patch) | |
tree | f28eaed5d273ab8ac7d2805dfe36dcb810976f76 /src | |
parent | 327569035c70b6171347e5c9c0cd3de4fd7383eb (diff) |
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", ...).
Diffstat (limited to 'src')
-rw-r--r-- | src/nix/command.cc | 22 | ||||
-rw-r--r-- | src/nix/command.hh | 1 | ||||
-rw-r--r-- | 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> 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> 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> 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> 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>()); +static RegisterCommand r1(make_ref<CmdVerify>()); |