implement --print-uris support for changelog command
authorDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 7 Feb 2011 13:55:11 +0000 (14:55 +0100)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Mon, 7 Feb 2011 13:55:11 +0000 (14:55 +0100)
cmdline/apt-get.cc
test/integration/test-changelog

index a6377f9..99c0e5d 100644 (file)
@@ -2876,6 +2876,7 @@ bool GuessThirdPartyChangelogUri(CacheFile &Cache,
    // now strip away the filename and add srcpkg_srcver.changelog
    return true;
 }
+                                                                       /*}}}*/
 // DownloadChangelog - Download the changelog                          /*{{{*/
 // ---------------------------------------------------------------------
 bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher, 
@@ -2900,13 +2901,19 @@ bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
                           "http://packages.debian.org/changelogs");
    path = GetChangelogPath(CacheFile, Pkg, Ver);
    strprintf(changelog_uri, "%s/%s/changelog", server.c_str(), path.c_str());
+   if (_config->FindB("APT::Get::Print-URIs", false) == true)
+   {
+      std::cout << '\'' << changelog_uri << '\'' << std::endl;
+      return true;
+   }
+
    strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), changelog_uri.c_str());
    // queue it
    new pkgAcqFile(&Fetcher, changelog_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile);
 
-   // try downloading it, if that fails, they third-party-changelogs location
-   // FIXME: res is "Continue" even if I get a 404?!?
-   int res = Fetcher.Run();
+   // try downloading it, if that fails, try third-party-changelogs location
+   // FIXME: Fetcher.Run() is "Continue" even if I get a 404?!?
+   Fetcher.Run();
    if (!FileExists(targetfile))
    {
       string third_party_uri;
@@ -2914,7 +2921,7 @@ bool DownloadChangelog(CacheFile &CacheFile, pkgAcquire &Fetcher,
       {
          strprintf(descr, _("Changelog for %s (%s)"), Pkg.Name(), third_party_uri.c_str());
          new pkgAcqFile(&Fetcher, third_party_uri, "", 0, descr, Pkg.Name(), "ignored", targetfile);
-         res = Fetcher.Run();
+         Fetcher.Run();
       }
    }
 
@@ -2955,6 +2962,12 @@ bool DoChangelog(CommandLine &CmdL)
    APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache,
                CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper);
    pkgAcquire Fetcher;
+
+   if (_config->FindB("APT::Get::Print-URIs", false) == true)
+      for (APT::VersionSet::const_iterator Ver = verset.begin();
+          Ver != verset.end(); ++Ver)
+        return DownloadChangelog(Cache, Fetcher, Ver, "");
+
    AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0));
    Fetcher.Setup(&Stat);
 
index f052793..b5c204a 100755 (executable)
@@ -15,6 +15,8 @@ aptget update -qq
 
 echo 'Apt::Changelogs::Server "http://localhost:8080/";' >> ./aptconfig.conf
 
+testequal "'http://localhost:8080//pool/apt_1.0/changelog'" aptget changelog apt --print-uris
+
 aptget changelog apt -qq > apt.changelog
 testfileequal 'apt.changelog' "$(cat aptarchive/pool/apt_1.0/changelog)"
 rm aptarchive/pool/apt_1.0/changelog