diff --git a/src/Composer/Downloader/FileDownloader.php b/src/Composer/Downloader/FileDownloader.php
index 8c8c13bc0..293be3a1d 100644
--- a/src/Composer/Downloader/FileDownloader.php
+++ b/src/Composer/Downloader/FileDownloader.php
@@ -84,7 +84,7 @@ class FileDownloader implements DownloaderInterface
}
if ($output) {
- $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")", false);
+ $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false);
}
$urls = $package->getDistUrls();
@@ -133,7 +133,7 @@ class FileDownloader implements DownloaderInterface
// 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)) {
if (!$this->outputProgress) {
- $this->io->writeError(' Downloading', false);
+ $this->io->writeError('Downloading', false);
}
// try to download 3 times then fail hard
@@ -153,12 +153,16 @@ class FileDownloader implements DownloaderInterface
}
}
+ if (!$this->outputProgress) {
+ $this->io->writeError(' (100%)', false);
+ }
+
if ($this->cache) {
$this->lastCacheWrites[$package->getName()] = $cacheKey;
$this->cache->copyFrom($cacheKey, $fileName);
}
} else {
- $this->io->writeError(' Loading from cache', false);
+ $this->io->writeError('Loading from cache', false);
}
if (!file_exists($fileName)) {
@@ -206,7 +210,7 @@ class FileDownloader implements DownloaderInterface
$from = $initial->getPrettyVersion();
$to = $target->getPrettyVersion();
- $this->io->writeError(" - Updating " . $name . " (" . $from . " => " . $to . ")", false);
+ $this->io->writeError(" - Updating " . $name . " (" . $from . " => " . $to . "): ", false);
$this->remove($initial, $path, false);
$this->download($target, $path, false);
diff --git a/src/Composer/Downloader/FossilDownloader.php b/src/Composer/Downloader/FossilDownloader.php
index 72b09ce8c..63839df65 100644
--- a/src/Composer/Downloader/FossilDownloader.php
+++ b/src/Composer/Downloader/FossilDownloader.php
@@ -31,7 +31,7 @@ class FossilDownloader extends VcsDownloader
$url = ProcessExecutor::escape($url);
$ref = ProcessExecutor::escape($package->getSourceReference());
$repoFile = $path . '.fossil';
- $this->io->writeError(" Cloning ".$package->getSourceReference());
+ $this->io->writeError("Cloning ".$package->getSourceReference());
$command = sprintf('fossil clone %s %s', $url, ProcessExecutor::escape($repoFile));
if (0 !== $this->process->execute($command, $ignoredOutput)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
diff --git a/src/Composer/Downloader/GitDownloader.php b/src/Composer/Downloader/GitDownloader.php
index 8c54832c4..89a86369f 100644
--- a/src/Composer/Downloader/GitDownloader.php
+++ b/src/Composer/Downloader/GitDownloader.php
@@ -49,7 +49,7 @@ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface
// --dissociate option is only available since git 2.3.0-rc0
$gitVersion = $this->gitUtil->getVersion();
- $msg = " Cloning ".$this->getShortHash($ref);
+ $msg = "Cloning ".$this->getShortHash($ref);
if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=')) {
$this->io->writeError('', true, IOInterface::DEBUG);
$this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG);
@@ -57,7 +57,7 @@ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface
$this->gitUtil->syncMirror($url, $cachePath);
if (is_dir($cachePath)) {
$cacheOptions = sprintf('--dissociate --reference %s ', ProcessExecutor::escape($cachePath));
- $msg = " Cloning ".$this->getShortHash($ref).' from cache';
+ $msg = "Cloning ".$this->getShortHash($ref).' from cache';
}
} catch (\RuntimeException $e) {}
}
diff --git a/src/Composer/Downloader/HgDownloader.php b/src/Composer/Downloader/HgDownloader.php
index a69d654ae..a7a42e62c 100644
--- a/src/Composer/Downloader/HgDownloader.php
+++ b/src/Composer/Downloader/HgDownloader.php
@@ -30,7 +30,7 @@ class HgDownloader extends VcsDownloader
$url = ProcessExecutor::escape($url);
$ref = ProcessExecutor::escape($package->getSourceReference());
- $this->io->writeError(" Cloning ".$package->getSourceReference());
+ $this->io->writeError("Cloning ".$package->getSourceReference());
$command = sprintf('hg clone %s %s', $url, ProcessExecutor::escape($path));
if (0 !== $this->process->execute($command, $ignoredOutput)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
diff --git a/src/Composer/Downloader/PathDownloader.php b/src/Composer/Downloader/PathDownloader.php
index 79b687985..c40807258 100644
--- a/src/Composer/Downloader/PathDownloader.php
+++ b/src/Composer/Downloader/PathDownloader.php
@@ -81,7 +81,7 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
if ($output) {
$this->io->writeError(sprintf(
- ' - Installing %s (%s)',
+ ' - Installing %s (%s): ',
$package->getName(),
$package->getFullPrettyVersion()
), false);
@@ -92,8 +92,8 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
try {
if (Platform::isWindows()) {
// Implement symlinks as NTFS junctions on Windows
+ $this->io->writeError(sprintf('Junctioning from %s', $url), false);
$this->filesystem->junction($realUrl, $path);
- $this->io->writeError(sprintf(' Junctioned from %s', $url), false);
} else {
$absolutePath = $path;
if (!$this->filesystem->isAbsolutePath($absolutePath)) {
@@ -101,8 +101,8 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
}
$shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl);
$path = rtrim($path, "/");
+ $this->io->writeError(sprintf('Symlinking from %s', $url), false);
$fileSystem->symlink($shortestPath, $path);
- $this->io->writeError(sprintf(' Symlinked from %s', $url), false);
}
} catch (IOException $e) {
if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) {
@@ -118,8 +118,8 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
// Fallback if symlink failed or if symlink is not allowed for the package
if (self::STRATEGY_MIRROR == $currentStrategy) {
+ $this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false);
$fileSystem->mirror($realUrl, $path);
- $this->io->writeError(sprintf('%s Mirrored from %s', $isFallback ? ' ' : '', $url), false);
}
$this->io->writeError('');
@@ -144,7 +144,7 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter
throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName());
}
} else {
- parent::remove($package, $path);
+ parent::remove($package, $path, $output);
}
}
diff --git a/src/Composer/Downloader/PerforceDownloader.php b/src/Composer/Downloader/PerforceDownloader.php
index ff1cc10c6..09980e8e9 100644
--- a/src/Composer/Downloader/PerforceDownloader.php
+++ b/src/Composer/Downloader/PerforceDownloader.php
@@ -32,7 +32,7 @@ class PerforceDownloader extends VcsDownloader
$ref = $package->getSourceReference();
$label = $this->getLabelFromSourceReference($ref);
- $this->io->writeError(' Cloning ' . $ref);
+ $this->io->writeError('Cloning ' . $ref);
$this->initPerforce($package, $path, $url);
$this->perforce->setStream($ref);
$this->perforce->p4Login();
diff --git a/src/Composer/Downloader/VcsDownloader.php b/src/Composer/Downloader/VcsDownloader.php
index f779bead1..cdc63e5ec 100644
--- a/src/Composer/Downloader/VcsDownloader.php
+++ b/src/Composer/Downloader/VcsDownloader.php
@@ -60,7 +60,7 @@ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterfa
throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information');
}
- $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")", false);
+ $this->io->writeError(" - Installing " . $package->getName() . " (" . $package->getFullPrettyVersion() . "): ", false);
$this->filesystem->emptyDirectory($path);
$urls = $package->getSourceUrls();
@@ -130,7 +130,7 @@ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterfa
$to = $target->getFullPrettyVersion();
}
- $this->io->writeError(" - Updating " . $name . " (" . $from . " => " . $to . ")", false);
+ $this->io->writeError(" - Updating " . $name . " (" . $from . " => " . $to . "): ", false);
$this->cleanChanges($initial, $path, true);
$urls = $target->getSourceUrls();
diff --git a/src/Composer/Util/RemoteFilesystem.php b/src/Composer/Util/RemoteFilesystem.php
index 671fb9bb6..cff3155f3 100644
--- a/src/Composer/Util/RemoteFilesystem.php
+++ b/src/Composer/Util/RemoteFilesystem.php
@@ -276,7 +276,7 @@ class RemoteFilesystem
}
if ($this->progress && !$isRedirect) {
- $this->io->writeError(" Downloading: Connecting...", false);
+ $this->io->writeError("Downloading (connecting...)", false);
}
$errorMessage = '';
@@ -367,7 +367,7 @@ class RemoteFilesystem
if ($statusCode && $statusCode >= 400 && $statusCode <= 599) {
if (!$this->retry) {
if ($this->progress && !$this->retry && !$isRedirect) {
- $this->io->overwriteError(" Downloading: Failed", false);
+ $this->io->overwriteError("Downloading (failed)", false);
}
$e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode);
@@ -380,7 +380,7 @@ class RemoteFilesystem
}
if ($this->progress && !$this->retry && !$isRedirect) {
- $this->io->overwriteError(" Downloading: ".($result === false ? 'Failed' : '100%'), false);
+ $this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false);
}
// decode gzip
@@ -568,7 +568,7 @@ class RemoteFilesystem
if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) {
$this->lastProgress = $progression;
- $this->io->overwriteError(" Downloading: $progression%", false);
+ $this->io->overwriteError("Downloading ($progression%)", false);
}
}
break;
diff --git a/tests/Composer/Test/Fixtures/functional/create-project-command.test b/tests/Composer/Test/Fixtures/functional/create-project-command.test
index 1f2f36f1e..35c343355 100644
--- a/tests/Composer/Test/Fixtures/functional/create-project-command.test
+++ b/tests/Composer/Test/Fixtures/functional/create-project-command.test
@@ -2,7 +2,7 @@
create-project seld/jsonlint %testDir% 1.0.0 --prefer-source -n
--EXPECT-ERROR--
Installing seld/jsonlint (1.0.0)
- - Installing seld/jsonlint (1.0.0) Cloning 3b4bc2a96f
+ - Installing seld/jsonlint (1.0.0): Cloning 3b4bc2a96f
Created project in %testDir%
Loading composer repositories with package information
Updating dependencies (including require-dev)