Print the store paths to be fetched sorted by StorePath name() and not baseName
Presently when nix says something like: ``` these 486 paths will be fetched (511.54 MiB download, 6458.64 MiB unpacked): ...path1 ...path2 ...path3 ... ... ...path486 ``` It sorts path1, path2, path3, ..., path486 in lexicographic order of the store path. After this commit, nix will show path1, path2, path3, ..., path486 sorted by StorePath name() (basically everything after the hash) rather than the store path. This makes it easier to review what exactly is being downloaded at a glance, especially when many paths need to be fetched.
This commit is contained in:
parent
4a921ba43b
commit
427555861b
|
@ -84,8 +84,18 @@ void printMissing(ref<Store> store, const StorePathSet & willBuild,
|
|||
downloadSizeMiB,
|
||||
narSizeMiB);
|
||||
}
|
||||
for (auto & i : willSubstitute)
|
||||
printMsg(lvl, " %s", store->printStorePath(i));
|
||||
std::vector<const StorePath *> willSubstituteSorted = {};
|
||||
std::for_each(willSubstitute.begin(), willSubstitute.end(),
|
||||
[&](const StorePath &p) { willSubstituteSorted.push_back(&p); });
|
||||
std::sort(willSubstituteSorted.begin(), willSubstituteSorted.end(),
|
||||
[](const StorePath *lhs, const StorePath *rhs) {
|
||||
if (lhs->name() == rhs->name())
|
||||
return lhs->to_string() < rhs->to_string();
|
||||
else
|
||||
return lhs->name() < rhs->name();
|
||||
});
|
||||
for (auto p : willSubstituteSorted)
|
||||
printMsg(lvl, " %s", store->printStorePath(*p));
|
||||
}
|
||||
|
||||
if (!unknown.empty()) {
|
||||
|
|
Loading…
Reference in a new issue