diff --git a/src/Symfony/Component/AssetMapper/CHANGELOG.md b/src/Symfony/Component/AssetMapper/CHANGELOG.md index e0b43ebb5e691..11abeaf9ad66e 100644 --- a/src/Symfony/Component/AssetMapper/CHANGELOG.md +++ b/src/Symfony/Component/AssetMapper/CHANGELOG.md @@ -4,6 +4,7 @@ CHANGELOG 7.2 --- + * Add logical failure implementation. * Shorten the public digest of mapped assets to 7 characters 7.1 diff --git a/src/Symfony/Component/AssetMapper/Command/ImportMapInstallCommand.php b/src/Symfony/Component/AssetMapper/Command/ImportMapInstallCommand.php index 8f67656e5264e..0c1829d91cad6 100644 --- a/src/Symfony/Component/AssetMapper/Command/ImportMapInstallCommand.php +++ b/src/Symfony/Component/AssetMapper/Command/ImportMapInstallCommand.php @@ -11,6 +11,7 @@ namespace Symfony\Component\AssetMapper\Command; +use Symfony\Component\AssetMapper\Exception\LogicException; use Symfony\Component\AssetMapper\ImportMap\RemotePackageDownloader; use Symfony\Component\Console\Attribute\AsCommand; use Symfony\Component\Console\Command\Command; @@ -42,18 +43,26 @@ protected function execute(InputInterface $input, OutputInterface $output): int $finishedCount = 0; $progressBar = new ProgressBar($output); $progressBar->setFormat('%current%/%max% %bar% %url%'); - $downloadedPackages = $this->packageDownloader->downloadPackages(function (string $package, string $event, ResponseInterface $response, int $totalPackages) use (&$finishedCount, $progressBar) { - $progressBar->setMessage($response->getInfo('url'), 'url'); - if (0 === $progressBar->getMaxSteps()) { - $progressBar->setMaxSteps($totalPackages); - $progressBar->start(); - } - if ('finished' === $event) { - ++$finishedCount; - $progressBar->advance(); - } - }); + try { + $downloadedPackages = $this->packageDownloader->downloadPackages(function (string $package, string $event, ResponseInterface $response, int $totalPackages) use (&$finishedCount, $progressBar) { + $progressBar->setMessage($response->getInfo('url'), 'url'); + if (0 === $progressBar->getMaxSteps()) { + $progressBar->setMaxSteps($totalPackages); + $progressBar->start(); + } + + if ('finished' === $event) { + ++$finishedCount; + $progressBar->advance(); + } + }); + } catch (LogicException $throwable) { + $io->error($throwable->getMessage()); + + return Command::FAILURE; + } + $progressBar->finish(); $progressBar->clear(); diff --git a/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageDownloader.php b/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageDownloader.php index 47b6a14598728..44dabdc1d2861 100644 --- a/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageDownloader.php +++ b/src/Symfony/Component/AssetMapper/ImportMap/RemotePackageDownloader.php @@ -11,8 +11,11 @@ namespace Symfony\Component\AssetMapper\ImportMap; +use Symfony\Component\AssetMapper\Exception\LogicException; use Symfony\Component\AssetMapper\ImportMap\Resolver\PackageResolverInterface; use Symfony\Component\Filesystem\Filesystem; +use Symfony\Component\HttpClient\Exception\TimeoutException; +use Symfony\Component\HttpClient\Exception\TransportException; /** * @final @@ -69,11 +72,15 @@ public function downloadPackages(?callable $progressCallback = null): array return []; } - $contents = $this->packageResolver->downloadPackages($remoteEntriesToDownload, $progressCallback); + try { + $contents = $this->packageResolver->downloadPackages($remoteEntriesToDownload, $progressCallback); + } catch (TimeoutException|TransportException $exception) { + throw new LogicException($exception->getMessage()); + } $downloadedPackages = []; foreach ($remoteEntriesToDownload as $package => $entry) { if (!isset($contents[$package])) { - throw new \LogicException(\sprintf('The package "%s" was not downloaded.', $package)); + throw new LogicException(\sprintf('The package "%s" was not downloaded.', $package)); } $this->remotePackageStorage->save($entry, $contents[$package]['content']); @@ -92,7 +99,7 @@ public function downloadPackages(?callable $progressCallback = null): array } if ($contents) { - throw new \LogicException(\sprintf('The following packages were unexpectedly downloaded: "%s".', implode('", "', array_keys($contents)))); + throw new LogicException(\sprintf('The following packages were unexpectedly downloaded: "%s".', implode('", "', array_keys($contents)))); } $this->saveInstalled($newInstalled); @@ -136,7 +143,7 @@ private function loadInstalled(): array } if (!isset($data['dependencies'])) { - throw new \LogicException(\sprintf('The package "%s" is missing its dependencies.', $package)); + throw new LogicException(\sprintf('The package "%s" is missing its dependencies.', $package)); } if (!isset($data['extraFiles'])) { pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy