diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-22T10·24+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2003-07-22T10·24+0000 |
commit | df648c4967af7298fe55f75c7616e39e5b5e7d37 (patch) | |
tree | eb39be3f0d814ee7410acf9ffb4b5490d8c40900 | |
parent | d84931ee5607c152b4bc7eb23b7ab94ded9f85c7 (diff) |
* `nix --query --expansion' (`-qe') to get any path with content
corresponding to the given id.
-rw-r--r-- | src/nix.cc | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/nix.cc b/src/nix.cc index f8e019eb4a2f..e0885422762f 100644 --- a/src/nix.cc +++ b/src/nix.cc @@ -106,18 +106,19 @@ static void opAdd(Strings opFlags, Strings opArgs) /* Perform various sorts of queries. */ static void opQuery(Strings opFlags, Strings opArgs) { - enum { qPaths, qRefs, qGenerators, qUnknown } query = qPaths; + enum { qList, qRefs, qGenerators, qExpansion } query = qList; for (Strings::iterator i = opFlags.begin(); i != opFlags.end(); i++) - if (*i == "--list" || *i == "-l") query = qPaths; + if (*i == "--list" || *i == "-l") query = qList; else if (*i == "--refs" || *i == "-r") query = qRefs; else if (*i == "--generators" || *i == "-g") query = qGenerators; + else if (*i == "--expansion" || *i == "-e") query = qExpansion; else throw UsageError(format("unknown flag `%1%'") % *i); switch (query) { - case qPaths: { + case qList: { StringSet paths; for (Strings::iterator i = opArgs.begin(); i != opArgs.end(); i++) @@ -159,6 +160,15 @@ static void opQuery(Strings opFlags, Strings opArgs) break; } + case qExpansion: { + for (Strings::iterator i = opArgs.begin(); + i != opArgs.end(); i++) + /* !!! should not use substitutes; this is a query, + it should not have side-effects */ + cout << format("%s\n") % expandId(parseHash(*i)); + break; + } + default: abort(); } |