1
0
Fork 0

Merge branch '1.6'

pull/6683/merge
Jordi Boggiano 2018-04-13 10:52:23 +02:00
commit ea78712822
6 changed files with 35 additions and 31 deletions

View File

@ -92,13 +92,14 @@ Add this to your project's root `composer.json`:
That will fetch the `dev-bugfix` version of `monolog/monolog` from your GitHub
and alias it to `1.0.x-dev`.
> **Note:** If a package with inline aliases is required, the alias (right of
> the `as`) is used as the version constraint. The part left of the `as` is
> discarded. As a consequence, if A requires B and B requires `monolog/monolog`
> version `dev-bugfix as 1.0.x-dev`, installing A will make B require
> `1.0.x-dev`, which may exist as a branch alias or an actual `1.0` branch. If
> it does not, it must be re-inline-aliased in A's `composer.json`.
> **Note:** Inline aliasing is a root-only feature. If a package with inline
> aliases is required, the alias (right of the `as`) is used as the version
> constraint. The part left of the `as` is discarded. As a consequence, if
> A requires B and B requires `monolog/monolog` version `dev-bugfix as 1.0.x-dev`,
> installing A will make B require `1.0.x-dev`, which may exist as a branch
> alias or an actual `1.0` branch. If it does not, it must be
> inline-aliased again in A's `composer.json`.
> **Note:** Inline aliasing should be avoided, especially for published
> packages. If you found a bug, try and get your fix merged upstream. This
> helps to avoid issues for users of your package.
> packages/libraries. If you found a bug, try and get your fix merged upstream.
> This helps to avoid issues for users of your package.

View File

@ -329,24 +329,18 @@ EOT
ksort($packages[$type]);
$nameLength = $versionLength = $latestLength = 0;
if ($showLatest && $showVersion) {
foreach ($packages[$type] as $package) {
if (is_object($package)) {
$nameLength = max($nameLength, strlen($package->getPrettyName()));
if ($showVersion) {
$versionLength = max($versionLength, strlen($package->getFullPrettyVersion()));
if ($showLatest) {
$latestPackage = $this->findLatestPackage($package, $composer, $phpVersion, $showMinorOnly);
if ($latestPackage === false) {
continue;
}
$latestPackages[$package->getPrettyName()] = $latestPackage;
$latestLength = max($latestLength, strlen($latestPackage->getFullPrettyVersion()));
}
}
} else {
$nameLength = max($nameLength, strlen($package));
}
}
$writePath = !$input->getOption('name-only') && $input->getOption('path');
@ -357,11 +351,6 @@ EOT
$hasOutdatedPackages = false;
$viewData[$type] = array();
$viewMetaData[$type] = array(
'nameLength' => $nameLength,
'versionLength' => $versionLength,
'latestLength' => $latestLength,
);
foreach ($packages[$type] as $package) {
$packageViewData = array();
if (is_object($package)) {
@ -376,12 +365,15 @@ EOT
}
$packageViewData['name'] = $package->getPrettyName();
$nameLength = max($nameLength, strlen($package->getPrettyName()));
if ($writeVersion) {
$packageViewData['version'] = $package->getFullPrettyVersion();
$versionLength = max($versionLength, strlen($package->getFullPrettyVersion()));
}
if ($writeLatest && $latestPackage) {
$packageViewData['latest'] = $latestPackage->getFullPrettyVersion();
$packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package);
$latestLength = max($latestLength, strlen($latestPackage->getFullPrettyVersion()));
}
if ($writeDescription) {
$packageViewData['description'] = $package->getDescription();
@ -403,9 +395,15 @@ EOT
}
} else {
$packageViewData['name'] = $package;
$nameLength = max($nameLength, strlen($package));
}
$viewData[$type][] = $packageViewData;
}
$viewMetaData[$type] = array(
'nameLength' => $nameLength,
'versionLength' => $versionLength,
'latestLength' => $latestLength,
);
if ($input->getOption('strict') && $hasOutdatedPackages) {
$exitCode = 1;
break;

View File

@ -36,7 +36,7 @@ class FossilDownloader extends VcsDownloader
if (0 !== $this->process->execute($command, $ignoredOutput)) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}
$command = sprintf('fossil open %s', ProcessExecutor::escape($repoFile));
$command = sprintf('fossil open %s --nested', ProcessExecutor::escape($repoFile));
if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) {
throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput());
}

View File

@ -166,7 +166,12 @@ class EventDispatcher
$return = 0;
foreach ($listeners as $callable) {
if (!is_string($callable) && is_callable($callable)) {
if (!is_string($callable)) {
if (!is_callable($callable)) {
$className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0];
throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public');
}
$event = $this->checkListenerExpectedEvent($callable, $event);
$return = false === call_user_func($callable, $event) ? 1 : 0;
} elseif ($this->isComposerScript($callable)) {

View File

@ -96,7 +96,7 @@ class FossilDriver extends VcsDriver
throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output);
}
if (0 !== $this->process->execute(sprintf('fossil open %s', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) {
if (0 !== $this->process->execute(sprintf('fossil open %s --nested', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) {
$output = $this->process->getErrorOutput();
throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output);

View File

@ -76,7 +76,7 @@ class FossilDownloaderTest extends TestCase
->with($this->equalTo($expectedFossilCommand))
->will($this->returnValue(0));
$expectedFossilCommand = $this->getCmd('fossil open \'repo.fossil\'');
$expectedFossilCommand = $this->getCmd('fossil open \'repo.fossil\' --nested');
$processExecutor->expects($this->at(1))
->method('execute')
->with($this->equalTo($expectedFossilCommand))