about summary refs log tree commit diff
path: root/src/nix-store
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-store')
-rw-r--r--src/nix-store/help.txt12
-rw-r--r--src/nix-store/main.cc8
2 files changed, 16 insertions, 4 deletions
diff --git a/src/nix-store/help.txt b/src/nix-store/help.txt
index deef23ff8f3b..35d5423cd8d2 100644
--- a/src/nix-store/help.txt
+++ b/src/nix-store/help.txt
@@ -4,7 +4,8 @@ nix-store [OPTIONS...] [ARGUMENTS...]
 
 Operations:
 
-  --realise / -r: build a Nix derivation
+  --realise / -r: ensure path validity; if a derivation, ensure that
+      validity of the outputs
   --add / -A: copy a path to the Nix store
   --query / -q: query information
 
@@ -27,9 +28,16 @@ Query flags:
   --outputs: query the output paths of a Nix derivation (default)
   --requisites / -R: print all paths necessary to realise a path
   --references: print all paths referenced by the given path
-  --referers: print all paths refering to the given path
+  --referers: print all paths directly refering to the given path
+  --referers-closure: print all paths (in)directly refering to the given path
   --graph: print a dot graph rooted at given ids
 
+Query switches (not applicable to all queries):
+
+  --use-output: perform query on output of derivation, not derivation itself
+  --force-realise: realise the path before performing the query
+  --include-outputs: in `-R' on a derivation, include requisites of outputs
+  
 Options:
 
   --verbose / -v: verbose operation (may be repeated)
diff --git a/src/nix-store/main.cc b/src/nix-store/main.cc
index addf9c7d0d67..dc7a6de8b8ec 100644
--- a/src/nix-store/main.cc
+++ b/src/nix-store/main.cc
@@ -96,7 +96,8 @@ static void printPathSet(const PathSet & paths)
 /* Perform various sorts of queries. */
 static void opQuery(Strings opFlags, Strings opArgs)
 {
-    enum { qOutputs, qRequisites, qReferences, qReferers, qGraph } query = qOutputs;
+    enum { qOutputs, qRequisites, qReferences, qReferers,
+           qReferersClosure, qGraph } query = qOutputs;
     bool useOutput = false;
     bool includeOutputs = false;
     bool forceRealise = false;
@@ -107,6 +108,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
         else if (*i == "--requisites" || *i == "-R") query = qRequisites;
         else if (*i == "--references") query = qReferences;
         else if (*i == "--referers") query = qReferers;
+        else if (*i == "--referers-closure") query = qReferersClosure;
         else if (*i == "--graph") query = qGraph;
         else if (*i == "--use-output" || *i == "-u") useOutput = true;
         else if (*i == "--force-realise" || *i == "-f") forceRealise = true;
@@ -128,7 +130,8 @@ static void opQuery(Strings opFlags, Strings opArgs)
 
         case qRequisites:
         case qReferences:
-        case qReferers: {
+        case qReferers:
+        case qReferersClosure: {
             PathSet paths;
             for (Strings::iterator i = opArgs.begin();
                  i != opArgs.end(); i++)
@@ -138,6 +141,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
                     storePathRequisites(path, includeOutputs, paths);
                 else if (query == qReferences) queryReferences(path, paths);
                 else if (query == qReferers) queryReferers(path,  paths);
+                else if (query == qReferersClosure) computeFSClosure(path, paths, true);
             }
             printPathSet(paths);
             break;