aboutsummaryrefslogtreecommitdiff
path: root/src/nix/profile.cc
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2022-02-20 23:46:11 -0600
committerMatthew Bauer <mjbauer95@gmail.com>2022-02-20 23:46:11 -0600
commit61295b910f2f2a6f2b0d288248c946713977ff1e (patch)
tree326dc0f5cd7dd02714da58165fe86a8e79143971 /src/nix/profile.cc
parent9bc03adbba5334663901c1136203bc07e4776be9 (diff)
Add verbosity to nix profile upgrade
Followup of https://github.com/NixOS/nix/pull/6086. This time adding a warning if no packages are upgraded.
Diffstat (limited to 'src/nix/profile.cc')
-rw-r--r--src/nix/profile.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/nix/profile.cc b/src/nix/profile.cc
index 55b5ff736..f0ce7eba8 100644
--- a/src/nix/profile.cc
+++ b/src/nix/profile.cc
@@ -410,12 +410,16 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
// FIXME: code duplication
std::vector<DerivedPath> pathsToBuild;
+ auto upgradedCount = 0;
+
for (size_t i = 0; i < manifest.elements.size(); ++i) {
auto & element(manifest.elements[i]);
if (element.source
&& !element.source->originalRef.input.isImmutable()
&& matches(*store, element, i, matchers))
{
+ upgradedCount++;
+
Activity act(*logger, lvlChatty, actUnknown,
fmt("checking '%s' for updates", element.source->attrPath));
@@ -448,6 +452,19 @@ struct CmdProfileUpgrade : virtual SourceExprCommand, MixDefaultProfile, MixProf
}
}
+ if (upgradedCount == 0) {
+ for (auto matcher: matchers) {
+ if (const size_t* index = std::get_if<size_t>(&matcher)){
+ warn("'%d' is not a valid index in profile", *index);
+ } else if (const Path* path = std::get_if<Path>(&matcher)){
+ warn("'%s' does not match any paths in profile", *path);
+ } else if (const RegexPattern* regex = std::get_if<RegexPattern>(&matcher)){
+ warn("'%s' does not match any packages in profile", regex->pattern);
+ }
+ }
+ warn ("Try `nix profile list` to see the current profile.");
+ }
+
store->buildPaths(pathsToBuild);
updateProfile(manifest.build(store));