implemented @putenv composer script
@putenv supports setting environment variables in a x-OS compatible waypull/8492/head
parent
f60b71616e
commit
3d8c1ebad5
|
@ -244,7 +244,11 @@ class EventDispatcher
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (substr($exec, 0, 5) === '@php ') {
|
if (substr($exec, 0, 8) === '@putenv ') {
|
||||||
|
putenv(substr($exec, 8));
|
||||||
|
|
||||||
|
continue;
|
||||||
|
} elseif (substr($exec, 0, 5) === '@php ') {
|
||||||
$exec = $this->getPhpExecCommand() . ' ' . substr($exec, 5);
|
$exec = $this->getPhpExecCommand() . ' ' . substr($exec, 5);
|
||||||
} else {
|
} else {
|
||||||
$finder = new PhpExecutableFinder();
|
$finder = new PhpExecutableFinder();
|
||||||
|
@ -512,7 +516,7 @@ class EventDispatcher
|
||||||
*/
|
*/
|
||||||
protected function isComposerScript($callable)
|
protected function isComposerScript($callable)
|
||||||
{
|
{
|
||||||
return '@' === substr($callable, 0, 1) && '@php ' !== substr($callable, 0, 5);
|
return '@' === substr($callable, 0, 1) && '@php ' !== substr($callable, 0, 5) && '@putenv ' !== substr($callable, 0, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -230,6 +230,43 @@ class EventDispatcherTest extends TestCase
|
||||||
$this->assertEquals($expected, $io->getOutput());
|
$this->assertEquals($expected, $io->getOutput());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDispatcherCanPutEnv()
|
||||||
|
{
|
||||||
|
$process = $this->getMockBuilder('Composer\Util\ProcessExecutor')->getMock();
|
||||||
|
$dispatcher = $this->getMockBuilder('Composer\EventDispatcher\EventDispatcher')
|
||||||
|
->setConstructorArgs(array(
|
||||||
|
$this->createComposerInstance(),
|
||||||
|
$io = new BufferIO('', OutputInterface::VERBOSITY_VERBOSE),
|
||||||
|
$process,
|
||||||
|
))
|
||||||
|
->setMethods(array(
|
||||||
|
'getListeners',
|
||||||
|
))
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$listeners = array(
|
||||||
|
'@putenv ABC=123',
|
||||||
|
'Composer\\Test\\EventDispatcher\\EventDispatcherTest::getTestEnv',
|
||||||
|
);
|
||||||
|
|
||||||
|
$dispatcher->expects($this->atLeastOnce())
|
||||||
|
->method('getListeners')
|
||||||
|
->will($this->returnValue($listeners));
|
||||||
|
|
||||||
|
$dispatcher->dispatchScript(ScriptEvents::POST_INSTALL_CMD, false);
|
||||||
|
|
||||||
|
$expected = '> post-install-cmd: @putenv ABC=123'.PHP_EOL.
|
||||||
|
'> post-install-cmd: Composer\Test\EventDispatcher\EventDispatcherTest::getTestEnv'.PHP_EOL;
|
||||||
|
$this->assertEquals($expected, $io->getOutput());
|
||||||
|
}
|
||||||
|
|
||||||
|
static public function getTestEnv() {
|
||||||
|
$val = getenv('ABC');
|
||||||
|
if ($val !== '123') {
|
||||||
|
throw new \Exception('getenv() did not return the expected value. expected 123 got '. var_export($val, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function testDispatcherCanExecuteComposerScriptGroups()
|
public function testDispatcherCanExecuteComposerScriptGroups()
|
||||||
{
|
{
|
||||||
$process = $this->getMockBuilder('Composer\Util\ProcessExecutor')->getMock();
|
$process = $this->getMockBuilder('Composer\Util\ProcessExecutor')->getMock();
|
||||||
|
|
Loading…
Reference in New Issue