diff options
author | David Kalnischkies <kalnischkies@gmail.com> | 2011-02-07 17:54:49 +0100 |
---|---|---|
committer | David Kalnischkies <kalnischkies@gmail.com> | 2011-02-07 17:54:49 +0100 |
commit | 42d41ddbcb8238add82609badd1fbb16f54c4077 (patch) | |
tree | 62f4e7f529db734cdd7852c21ddfafb01118ba35 | |
parent | 72dd5bec06d8d50ff9e8022e36a7d8a6f0cfd7a0 (diff) |
implement --print-uris for download command
-rw-r--r-- | cmdline/apt-get.cc | 21 | ||||
-rwxr-xr-x | test/integration/test-apt-get-download | 29 |
2 files changed, 45 insertions, 5 deletions
diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 93f167f19..878313212 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -2208,13 +2208,15 @@ bool DoDownload(CommandLine &CmdL) APT::CacheSetHelper helper(c0out); APT::VersionSet verset = APT::VersionSet::FromCommandLine(Cache, CmdL.FileList + 1, APT::VersionSet::CANDIDATE, helper); - pkgAcquire Fetcher; - AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0)); - Fetcher.Setup(&Stat); if (verset.empty() == true) return false; + pkgAcquire Fetcher; + AcqTextStatus Stat(ScreenWidth, _config->FindI("quiet",0)); + if (_config->FindB("APT::Get::Print-URIs") == true) + Fetcher.Setup(&Stat); + pkgRecords Recs(Cache); pkgSourceList *SrcList = Cache.GetSourceList(); for (APT::VersionSet::const_iterator Ver = verset.begin(); @@ -2245,9 +2247,18 @@ bool DoDownload(CommandLine &CmdL) // get the file new pkgAcqFile(&Fetcher, uri, hash.toStr(), (*Ver)->Size, descr, Pkg.Name(), "."); } - bool result = (Fetcher.Run() == pkgAcquire::Continue); - return result; + // Just print out the uris and exit if the --print-uris flag was used + if (_config->FindB("APT::Get::Print-URIs") == true) + { + pkgAcquire::UriIterator I = Fetcher.UriBegin(); + for (; I != Fetcher.UriEnd(); I++) + cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' << + I->Owner->FileSize << ' ' << I->Owner->HashSum() << endl; + return true; + } + + return (Fetcher.Run() == pkgAcquire::Continue); } /*}}}*/ // DoCheck - Perform the check operation /*{{{*/ diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download new file mode 100755 index 000000000..7db93c32f --- /dev/null +++ b/test/integration/test-apt-get-download @@ -0,0 +1,29 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture "i386" + +buildsimplenativepackage 'apt' 'all' '1.0' 'stable' +buildsimplenativepackage 'apt' 'all' '2.0' 'unstable' + +setupaptarchive + +testdownload() { + msgtest 'Test download of package file' $1 + if [ -z "$3" ]; then + aptget download ${2} + else + aptget download ${2}/${3} + fi + test -f $1 && msgpass || msgfail +} + +testdownload apt_1.0_all.deb apt stable +testdownload apt_2.0_all.deb apt + +DEBFILE="$(readlink -f aptarchive)/pool/apt_2.0_all.deb" +testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) sha256:$(sha256sum $DEBFILE | cut -d' ' -f 1)" aptget download apt --print-uris |