]> git.saurik.com Git - apt.git/commitdiff
Notice the user about "apt list -a" when only a single hit if found
authorMichael Vogt <mvo@ubuntu.com>
Wed, 9 Apr 2014 14:23:14 +0000 (16:23 +0200)
committerMichael Vogt <mvo@ubuntu.com>
Wed, 9 Apr 2014 14:23:14 +0000 (16:23 +0200)
If the user is using "apt list pattern" and there is only a single
hit, notice about "--all-versions" as this is what the user may
be interessted in

apt-private/private-list.cc
test/integration/test-apt-cli-list

index b053cbcbe2bfb2d120f86d3781b72fe31a760236..b69002103e3d44d8e3a6b33315fb6a48dc3f3874 100644 (file)
@@ -130,10 +130,11 @@ bool DoList(CommandLine &Cmd)
                             Cache->Head().PackageCount,
                             _("Listing"));
    GetLocalitySortedVersionSet(CacheFile, bag, matcher, progress);
                             Cache->Head().PackageCount,
                             _("Listing"));
    GetLocalitySortedVersionSet(CacheFile, bag, matcher, progress);
+   bool ShowAllVersions = _config->FindB("APT::Cmd::All-Versions", false);
    for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); ++V)
    {
       std::stringstream outs;
    for (LocalitySortedVersionSet::iterator V = bag.begin(); V != bag.end(); ++V)
    {
       std::stringstream outs;
-      if(_config->FindB("APT::Cmd::All-Versions", false) == true)
+      if(ShowAllVersions == true)
       {
          ListAllVersions(CacheFile, records, V.ParentPkg(), outs, includeSummary);
          output_map.insert(std::make_pair<std::string, std::string>(
       {
          ListAllVersions(CacheFile, records, V.ParentPkg(), outs, includeSummary);
          output_map.insert(std::make_pair<std::string, std::string>(
@@ -151,6 +152,18 @@ bool DoList(CommandLine &Cmd)
       std::cout << (*K).second << std::endl;
 
 
       std::cout << (*K).second << std::endl;
 
 
+   // be nice and tell the user if there is more to see
+   if (bag.size() == 1 && ShowAllVersions == false)
+   {
+      // start with -1 as we already displayed one version
+      int versions = -1;
+      pkgCache::VerIterator Ver = *bag.begin();
+      for ( ; Ver.end() == false; Ver++)
+         versions++;
+      if (versions > 0)
+         _error->Notice(P_("There is %i additional version. Please use the '-a' switch to see it", "There are %i additional versions. Please use the '-a' switch to see them.", versions), versions);
+   }
+
    return true;
 }
 
    return true;
 }
 
index 47cfb624ae8132b080c67483c883e3cff8c50708..b738bcc66f5a0d41ed5ddec1bb76722732151542 100755 (executable)
@@ -19,12 +19,17 @@ insertinstalledpackage 'bar' 'i386' '1.0'
 insertinstalledpackage 'foobar' 'i386' '1.0'
 insertpackage 'unstable' 'foobar' 'i386' '2.0'
 
 insertinstalledpackage 'foobar' 'i386' '1.0'
 insertpackage 'unstable' 'foobar' 'i386' '2.0'
 
+insertinstalledpackage 'baz' 'all' '0.1'
+insertpackage 'testing' 'baz' 'all' '1.0'
+insertpackage 'unstable' 'baz' 'all' '2.0'
+
 setupaptarchive
 
 APTARCHIVE=$(readlink -f ./aptarchive)
 
 testequal "Listing...
 bar/now 1.0 i386 [installed,local]
 setupaptarchive
 
 APTARCHIVE=$(readlink -f ./aptarchive)
 
 testequal "Listing...
 bar/now 1.0 i386 [installed,local]
+baz/unstable 2.0 all [upgradable from: 0.1]
 foo/unstable 1.0 all
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list
 
 foo/unstable 1.0 all
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list
 
@@ -33,12 +38,14 @@ foo/unstable 1.0 all
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list "foo*"
 
 testequal "Listing...
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list "foo*"
 
 testequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list --upgradable
 
 # FIXME: hm, hm - does it make sense to have this different? shouldn't
 #        we use "installed,upgradable" consitently?
 testequal "Listing...
 bar/now 1.0 i386 [installed,local]
 foobar/unstable 2.0 i386 [upgradable from: 1.0]" apt list --upgradable
 
 # FIXME: hm, hm - does it make sense to have this different? shouldn't
 #        we use "installed,upgradable" consitently?
 testequal "Listing...
 bar/now 1.0 i386 [installed,local]
+baz/now 0.1 all [installed,upgradable to: 2.0]
 foobar/now 1.0 i386 [installed,upgradable to: 2.0]" apt list --installed
 
 testequal "Listing...
 foobar/now 1.0 i386 [installed,upgradable to: 2.0]" apt list --installed
 
 testequal "Listing...
@@ -51,3 +58,8 @@ bar/now 1.0 i386 [installed,local]
   an autogenerated dummy bar=1.0/installed
 " apt list bar --verbose
 
   an autogenerated dummy bar=1.0/installed
 " apt list bar --verbose
 
+# ensure that the users learns about multiple versions too
+testequal "Listing...
+baz/unstable 2.0 all [upgradable from: 0.1]
+N: There are 2 additional versions. Please use the '-a' switch to see them." apt list baz -o quiet=0
+