1
0
Fork 0

Attempt using bash on windows if it is available, fixes #2831

pull/2828/merge
Jordi Boggiano 2014-03-29 17:26:43 +01:00
parent 07b8fe8109
commit 3e8a767f8a
1 changed files with 13 additions and 0 deletions

View File

@ -15,6 +15,7 @@ namespace Composer\IO;
use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Helper\HelperSet;
use Composer\Util\ProcessExecutor;
/** /**
* The Input/Output helper. * The Input/Output helper.
@ -169,8 +170,20 @@ class ConsoleIO extends BaseIO
*/ */
public function askAndHideAnswer($question) public function askAndHideAnswer($question)
{ {
$process = new ProcessExecutor($this);
// handle windows // handle windows
if (defined('PHP_WINDOWS_VERSION_BUILD')) { if (defined('PHP_WINDOWS_VERSION_BUILD')) {
// use bash if it's present
if (0 === $process->execute("bash -c 'echo OK'", $output) && 'OK' === rtrim($output)) {
$this->write($question, false);
$value = rtrim(shell_exec('bash -c "stty -echo; read -r mypassword; stty echo; echo $mypassword"'));
$this->write('');
return $value;
}
// fallback to hiddeninput executable
$exe = __DIR__.'\\hiddeninput.exe'; $exe = __DIR__.'\\hiddeninput.exe';
// handle code running from a phar // handle code running from a phar