aboutsummaryrefslogtreecommitdiff
path: root/src/nix-store/nix-store.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/nix-store/nix-store.cc')
-rw-r--r--src/nix-store/nix-store.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/nix-store/nix-store.cc b/src/nix-store/nix-store.cc
index fe68f681a..4051fdbe1 100644
--- a/src/nix-store/nix-store.cc
+++ b/src/nix-store/nix-store.cc
@@ -9,6 +9,7 @@
#include "util.hh"
#include "worker-protocol.hh"
#include "xmlgraph.hh"
+#include "graphml.hh"
#include <iostream>
#include <algorithm>
@@ -273,7 +274,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
enum QueryType
{ qDefault, qOutputs, qRequisites, qReferences, qReferrers
, qReferrersClosure, qDeriver, qBinding, qHash, qSize
- , qTree, qGraph, qXml, qResolve, qRoots };
+ , qTree, qGraph, qXml, qGraphML, qResolve, qRoots };
QueryType query = qDefault;
bool useOutput = false;
bool includeOutputs = false;
@@ -300,6 +301,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
else if (i == "--tree") query = qTree;
else if (i == "--graph") query = qGraph;
else if (i == "--xml") query = qXml;
+ else if (i == "--graphml") query = qGraphML;
else if (i == "--resolve") query = qResolve;
else if (i == "--roots") query = qRoots;
else if (i == "--use-output" || i == "-u") useOutput = true;
@@ -413,6 +415,16 @@ static void opQuery(Strings opFlags, Strings opArgs)
break;
}
+ case qGraphML: {
+ PathSet roots;
+ for (auto & i : opArgs) {
+ PathSet paths = maybeUseOutputs(store->followLinksToStorePath(i), useOutput, forceRealise);
+ roots.insert(paths.begin(), paths.end());
+ }
+ printGraphML(ref<Store>(store), roots);
+ break;
+ }
+
case qResolve: {
for (auto & i : opArgs)
cout << format("%1%\n") % store->followLinksToStorePath(i);