Merge remote-tracking branch 'cdayjr/issue-8481'
commit
6b8f1c71b6
|
@ -39,7 +39,7 @@ class ExecCommand extends BaseCommand
|
|||
->setHelp(
|
||||
<<<EOT
|
||||
Executes a vendored binary/script.
|
||||
|
||||
|
||||
Read more at https://getcomposer.org/doc/03-cli.md#exec
|
||||
EOT
|
||||
)
|
||||
|
@ -92,6 +92,14 @@ EOT
|
|||
$output->setVerbosity(OutputInterface::VERBOSITY_QUIET);
|
||||
}
|
||||
|
||||
if (getcwd() !== $this->getApplication()->getWorkingDirectory()) {
|
||||
try {
|
||||
chdir($this->getApplication()->getWorkingDirectory());
|
||||
} catch (\Exception $e) {
|
||||
throw new \RuntimeException('Could not switch back to working directory "'.$this->getApplication()->getWorkingDirectory().'"', 0, $e);
|
||||
}
|
||||
}
|
||||
|
||||
return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -62,6 +62,12 @@ class Application extends BaseApplication
|
|||
private $hasPluginCommands = false;
|
||||
private $disablePluginsByDefault = false;
|
||||
|
||||
/**
|
||||
* @var string Store the working directory so Composer
|
||||
* can switch back to it if there are issues
|
||||
*/
|
||||
private $workingDirectory = '';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
static $shutdownRegistered = false;
|
||||
|
@ -91,6 +97,8 @@ class Application extends BaseApplication
|
|||
|
||||
$this->io = new NullIO();
|
||||
|
||||
$this->workingDirectory = getcwd();
|
||||
|
||||
parent::__construct('Composer', Composer::getVersion());
|
||||
}
|
||||
|
||||
|
@ -491,4 +499,14 @@ class Application extends BaseApplication
|
|||
|
||||
return $commands;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the working directoy
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getWorkingDirectory()
|
||||
{
|
||||
return $this->workingDirectory;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue