aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-14 21:14:29 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2016-04-15 15:39:48 +0200
commit99851c6f06c80fe2222c5e5fcef963804e907170 (patch)
treef28eaed5d273ab8ac7d2805dfe36dcb810976f76 /src
parent327569035c70b6171347e5c9c0cd3de4fd7383eb (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.cc22
-rw-r--r--src/nix/command.hh1
-rw-r--r--src/nix/verify.cc68
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>());