1
0
Fork 0

Merge remote-tracking branch 'davidolrik/master'

pull/5503/merge
Jordi Boggiano 2016-09-10 12:32:00 +02:00
commit f63f1ff95f
3 changed files with 15 additions and 1 deletions

View File

@ -45,9 +45,10 @@ class ExecCommand extends BaseCommand
$binDir = $composer->getConfig()->get('bin-dir'); $binDir = $composer->getConfig()->get('bin-dir');
if ($input->getOption('list') || !$input->getArgument('binary')) { if ($input->getOption('list') || !$input->getArgument('binary')) {
$bins = glob($binDir . '/*'); $bins = glob($binDir . '/*');
$bins = array_merge($bins, array_map(function($e) { return "$e (local)"; }, $composer->getPackage()->getBinaries()));
if (!$bins) { if (!$bins) {
throw new \RuntimeException("No binaries found in bin-dir ($binDir)"); throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)");
} }
$this->getIO()->write(<<<EOT $this->getIO()->write(<<<EOT

View File

@ -220,6 +220,17 @@ class EventDispatcher
} else { } else {
$this->io->writeError(sprintf('> %s', $exec)); $this->io->writeError(sprintf('> %s', $exec));
} }
$possibleLocalBinaries = $this->composer->getPackage()->getBinaries();
if ( $possibleLocalBinaries ) {
foreach ( $possibleLocalBinaries as $localExec ) {
if ( preg_match("/\b${callable}$/", $localExec)) {
$exec = str_replace($callable, $localExec, $exec);
break;
}
}
}
if (0 !== ($exitCode = $this->process->execute($exec))) { if (0 !== ($exitCode = $this->process->execute($exec))) {
$this->io->writeError(sprintf('<error>Script %s handling the %s event returned with error code '.$exitCode.'</error>', $callable, $event->getName())); $this->io->writeError(sprintf('<error>Script %s handling the %s event returned with error code '.$exitCode.'</error>', $callable, $event->getName()));

View File

@ -351,6 +351,8 @@ class EventDispatcherTest extends TestCase
$composer = new Composer; $composer = new Composer;
$config = new Config; $config = new Config;
$composer->setConfig($config); $composer->setConfig($config);
$package = $this->getMock('Composer\Package\RootPackageInterface');
$composer->setPackage($package);
return $composer; return $composer;
} }