1
0
Fork 0

VcsRepository: make transport exceptions during initialize run accessible

* also display the http status code in composer failed to load a composer.json file
pull/8484/head
Stephan Vock 2019-12-17 10:24:53 +00:00
parent 082422f334
commit dd2cc3e985
1 changed files with 14 additions and 4 deletions

View File

@ -45,6 +45,7 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
/** @var VersionCacheInterface */ /** @var VersionCacheInterface */
private $versionCache; private $versionCache;
private $emptyReferences = array(); private $emptyReferences = array();
private $versionTransportExceptions = array();
public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null) public function __construct(array $repoConfig, IOInterface $io, Config $config, EventDispatcher $dispatcher = null, array $drivers = null, VersionCacheInterface $versionCache = null)
{ {
@ -125,6 +126,11 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
return $this->emptyReferences; return $this->emptyReferences;
} }
public function getVersionTransportExceptions()
{
return $this->versionTransportExceptions;
}
protected function initialize() protected function initialize()
{ {
parent::initialize(); parent::initialize();
@ -226,11 +232,14 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
$this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); $this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier)));
} catch (\Exception $e) { } catch (\Exception $e) {
if ($e instanceof TransportException && $e->getCode() === 404) { if ($e instanceof TransportException) {
$this->versionTransportExceptions['tags'][$tag] = $e;
if ($e->getCode() === 404) {
$this->emptyReferences[] = $identifier; $this->emptyReferences[] = $identifier;
} }
}
if ($isVeryVerbose) { if ($isVeryVerbose) {
$this->io->writeError('<warning>Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found' : $e->getMessage()).'</warning>'); $this->io->writeError('<warning>Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found (' . $e->getCode() . ' HTTP status code)' : $e->getMessage()).'</warning>');
} }
continue; continue;
} }
@ -306,11 +315,12 @@ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInt
} }
$this->addPackage($package); $this->addPackage($package);
} catch (TransportException $e) { } catch (TransportException $e) {
$this->versionTransportExceptions['branches'][$branch] = $e;
if ($e->getCode() === 404) { if ($e->getCode() === 404) {
$this->emptyReferences[] = $identifier; $this->emptyReferences[] = $identifier;
} }
if ($isVeryVerbose) { if ($isVeryVerbose) {
$this->io->writeError('<warning>Skipped branch '.$branch.', no composer file was found</warning>'); $this->io->writeError('<warning>Skipped branch '.$branch.', no composer file was found (' . $e->getCode() . ' HTTP status code)</warning>');
} }
continue; continue;
} catch (\Exception $e) { } catch (\Exception $e) {