From b3951b88042e03871131f1bbc846eadb9dea1d78 Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Thu, 25 Feb 2021 12:03:09 +0100 Subject: [PATCH] Fix output of FileDownloader and related to avoid async issues --- src/Composer/Downloader/ArchiveDownloader.php | 12 +++++++++--- src/Composer/Downloader/FileDownloader.php | 16 ++++++++++++++-- src/Composer/Downloader/PathDownloader.php | 18 +++++++++++++++--- 3 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/Composer/Downloader/ArchiveDownloader.php b/src/Composer/Downloader/ArchiveDownloader.php index 73a5ff678..53dd43b4d 100644 --- a/src/Composer/Downloader/ArchiveDownloader.php +++ b/src/Composer/Downloader/ArchiveDownloader.php @@ -34,9 +34,7 @@ abstract class ArchiveDownloader extends FileDownloader public function install(PackageInterface $package, $path, $output = true) { if ($output) { - $this->io->writeError(" - " . InstallOperation::format($package).": Extracting archive"); - } else { - $this->io->writeError('Extracting archive', false); + $this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); } $vendorDir = $this->config->get('vendor-dir'); @@ -151,6 +149,14 @@ abstract class ArchiveDownloader extends FileDownloader }); } + /** + * {@inheritDoc} + */ + protected function getInstallOperationAppendix(PackageInterface $package, $path) + { + return ': Extracting archive'; + } + /** * Extract file to directory * diff --git a/src/Composer/Downloader/FileDownloader.php b/src/Composer/Downloader/FileDownloader.php index b6d888665..653015bab 100644 --- a/src/Composer/Downloader/FileDownloader.php +++ b/src/Composer/Downloader/FileDownloader.php @@ -355,10 +355,10 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface */ public function update(PackageInterface $initial, PackageInterface $target, $path) { - $this->io->writeError(" - " . UpdateOperation::format($initial, $target) . ": ", false); + $this->io->writeError(" - " . UpdateOperation::format($initial, $target) . $this->getInstallOperationAppendix($target, $path)); $promise = $this->remove($initial, $path, false); - if ($promise === null || !$promise instanceof PromiseInterface) { + if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $self = $this; @@ -401,6 +401,18 @@ class FileDownloader implements DownloaderInterface, ChangeReportInterface return rtrim($this->config->get('vendor-dir').'/composer/tmp-'.md5($package.spl_object_hash($package)).'.'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); } + /** + * Gets appendix message to add to the "- Upgrading x" string being output on update + * + * @param PackageInterface $package package instance + * @param string $path download path + * @return string + */ + protected function getInstallOperationAppendix(PackageInterface $package, $path) + { + return ''; + } + /** * Process the download url * diff --git a/src/Composer/Downloader/PathDownloader.php b/src/Composer/Downloader/PathDownloader.php index 3d9f5137b..4cfe616ea 100644 --- a/src/Composer/Downloader/PathDownloader.php +++ b/src/Composer/Downloader/PathDownloader.php @@ -80,9 +80,7 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter if (realpath($path) === $realUrl) { if ($output) { - $this->io->writeError(" - " . InstallOperation::format($package).': Source already present'); - } else { - $this->io->writeError('Source already present', false); + $this->io->writeError(" - " . InstallOperation::format($package) . $this->getInstallOperationAppendix($package, $path)); } return; @@ -216,6 +214,20 @@ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInter } } + /** + * {@inheritDoc} + */ + protected function getInstallOperationAppendix(PackageInterface $package, $path) + { + $realUrl = realpath($package->getDistUrl()); + + if (realpath($path) === $realUrl) { + return ': Source already present'; + } + + return ''; + } + /** * Returns true if junctions can be created and safely used on Windows *