1
0
Fork 0

Fix output when loading zips from cache, fixes #7498

pull/7515/head
Jordi Boggiano 2018-08-03 14:06:31 +02:00
parent a53b3c6b66
commit 73f14c0c7c
1 changed files with 20 additions and 13 deletions

View File

@ -137,8 +137,11 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
$checksum = $package->getDistSha1Checksum();
$cacheKey = $this->getCacheKey($package, $processedUrl);
// download if we don't have it in cache or the cache is invalidated
if (!$this->cache || ($checksum && $checksum !== $this->cache->sha1($cacheKey)) || !$this->cache->copyTo($cacheKey, $fileName)) {
// use from cache if it is present and has a valid checksum or we have no checksum to check against
if ($this->cache && (!$checksum || $checksum === $this->cache->sha1($cacheKey)) && $this->cache->copyTo($cacheKey, $fileName)) {
$this->io->writeError('Loading from cache', false);
} else {
// download if cache restore failed
if (!$this->outputProgress) {
$this->io->writeError('Downloading', false);
}
@ -168,10 +171,6 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
$this->lastCacheWrites[$package->getName()] = $cacheKey;
$this->cache->copyFrom($cacheKey, $fileName);
}
} else {
if (!$this->outputProgress) {
$this->io->writeError('Loading from cache', false);
}
}
if (!file_exists($fileName)) {
@ -297,19 +296,27 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface
$this->io = new NullIO;
$this->io->loadConfiguration($this->config);
$this->outputProgress = false;
$e = null;
$this->download($package, $targetDir.'_compare', false);
try {
$this->download($package, $targetDir.'_compare', false);
$comparer = new Comparer();
$comparer->setSource($targetDir.'_compare');
$comparer->setUpdate($targetDir);
$comparer->doCompare();
$output = $comparer->getChanged(true, true);
$this->filesystem->removeDirectory($targetDir.'_compare');
$comparer = new Comparer();
$comparer->setSource($targetDir.'_compare');
$comparer->setUpdate($targetDir);
$comparer->doCompare();
$output = $comparer->getChanged(true, true);
$this->filesystem->removeDirectory($targetDir.'_compare');
} catch (\Exception $e) {
}
$this->io = $prevIO;
$this->outputProgress = $prevProgress;
if ($e) {
throw $e;
}
return trim($output);
}
}