mirror of
https://github.com/NixOS/nix
synced 2025-07-06 21:41:48 +02:00
add nix-store --query --valid-derivers command
notably useful when nix-store --query --deriver returns a non-existing path. Co-authored-by: Felix Uhl <iFreilicht@users.noreply.github.com>
This commit is contained in:
parent
6459a1c7ad
commit
925a444b92
9 changed files with 68 additions and 10 deletions
|
@ -283,7 +283,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
|
|||
{
|
||||
enum QueryType
|
||||
{ qOutputs, qRequisites, qReferences, qReferrers
|
||||
, qReferrersClosure, qDeriver, qBinding, qHash, qSize
|
||||
, qReferrersClosure, qDeriver, qValidDerivers, qBinding, qHash, qSize
|
||||
, qTree, qGraph, qGraphML, qResolve, qRoots };
|
||||
std::optional<QueryType> query;
|
||||
bool useOutput = false;
|
||||
|
@ -299,6 +299,7 @@ static void opQuery(Strings opFlags, Strings opArgs)
|
|||
else if (i == "--referrers" || i == "--referers") query = qReferrers;
|
||||
else if (i == "--referrers-closure" || i == "--referers-closure") query = qReferrersClosure;
|
||||
else if (i == "--deriver" || i == "-d") query = qDeriver;
|
||||
else if (i == "--valid-derivers") query = qValidDerivers;
|
||||
else if (i == "--binding" || i == "-b") {
|
||||
if (opArgs.size() == 0)
|
||||
throw UsageError("expected binding name");
|
||||
|
@ -372,6 +373,21 @@ static void opQuery(Strings opFlags, Strings opArgs)
|
|||
}
|
||||
break;
|
||||
|
||||
case qValidDerivers: {
|
||||
StorePathSet result;
|
||||
for (auto & i : opArgs) {
|
||||
auto derivers = store->queryValidDerivers(store->followLinksToStorePath(i));
|
||||
for (const auto &i: derivers) {
|
||||
result.insert(i);
|
||||
}
|
||||
}
|
||||
auto sorted = store->topoSortPaths(result);
|
||||
for (StorePaths::reverse_iterator i = sorted.rbegin();
|
||||
i != sorted.rend(); ++i)
|
||||
cout << fmt("%s\n", store->printStorePath(*i));
|
||||
break;
|
||||
}
|
||||
|
||||
case qBinding:
|
||||
for (auto & i : opArgs) {
|
||||
auto path = useDeriver(store->followLinksToStorePath(i));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue