diff options
-rw-r--r-- | src/clients/cave/cmd_report-fmt.hh | 3 | ||||
-rw-r--r-- | src/clients/cave/cmd_report.cc | 17 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/clients/cave/cmd_report-fmt.hh b/src/clients/cave/cmd_report-fmt.hh index 3fe48a58f..09a9a81d4 100644 --- a/src/clients/cave/cmd_report-fmt.hh +++ b/src/clients/cave/cmd_report-fmt.hh @@ -18,3 +18,6 @@ const auto fs_package_insecure = make_format_string_fetcher("report/insecure", 1 const auto fs_package_unused = make_format_string_fetcher("report/unused", 1) << " Not used by any package in world\\n"; +const auto fs_package_not_best = make_format_string_fetcher("report/not_best", 1) + << " Has better version available: " << param<'s'>() << "\\n"; + diff --git a/src/clients/cave/cmd_report.cc b/src/clients/cave/cmd_report.cc index 526f63009..e25c87a09 100644 --- a/src/clients/cave/cmd_report.cc +++ b/src/clients/cave/cmd_report.cc @@ -250,6 +250,23 @@ ReportCommand::run( } } + auto superiors((*env)[selection::BestVersionOnly(( + generator::Matches(make_package_dep_spec({ }) + .package((*i)->name()) + .version_requirement(make_named_values<VersionRequirement>( + n::version_operator() = vo_greater, + n::version_spec() = (*i)->version())), + nullptr, { })) | + filter::SameSlot(*i) | + filter::NotMasked() | + filter::SupportsAction<InstallAction>())]); + + if (! superiors->empty()) + { + need_heading(done_heading, *i); + cout << fuc(fs_package_not_best(), fv<'s'>(stringify(**superiors->begin()))); + } + if (done_heading) errors = true; } |