* nix --query --expansion' (-qe') to get any path with content

corresponding to the given id.
This commit is contained in:
Eelco Dolstra 2003-07-22 10:24:22 +00:00
parent d84931ee56
commit df648c4967

View file

@ -106,18 +106,19 @@ static void opAdd(Strings opFlags, Strings opArgs)
/* Perform various sorts of queries. */ /* Perform various sorts of queries. */
static void opQuery(Strings opFlags, Strings opArgs) 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(); for (Strings::iterator i = opFlags.begin();
i != opFlags.end(); i++) 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 == "--refs" || *i == "-r") query = qRefs;
else if (*i == "--generators" || *i == "-g") query = qGenerators; else if (*i == "--generators" || *i == "-g") query = qGenerators;
else if (*i == "--expansion" || *i == "-e") query = qExpansion;
else throw UsageError(format("unknown flag `%1%'") % *i); else throw UsageError(format("unknown flag `%1%'") % *i);
switch (query) { switch (query) {
case qPaths: { case qList: {
StringSet paths; StringSet paths;
for (Strings::iterator i = opArgs.begin(); for (Strings::iterator i = opArgs.begin();
i != opArgs.end(); i++) i != opArgs.end(); i++)
@ -159,6 +160,15 @@ static void opQuery(Strings opFlags, Strings opArgs)
break; 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: default:
abort(); abort();
} }