[Console] Use readline for user input when available
This allows to use arrow keys in the terminal instead of having weird characters
This commit is contained in:
parent
96e211d2da
commit
8b63d6209d
@ -1,6 +1,12 @@
|
|||||||
CHANGELOG
|
CHANGELOG
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
2.8.0
|
||||||
|
-----
|
||||||
|
|
||||||
|
* use readline for user input in the question helper when available to allow
|
||||||
|
the use of arrow keys
|
||||||
|
|
||||||
2.6.0
|
2.6.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
@ -127,11 +127,7 @@ class QuestionHelper extends Helper
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (false === $ret) {
|
if (false === $ret) {
|
||||||
$ret = fgets($inputStream, 4096);
|
$ret = $this->readFromInput($inputStream);
|
||||||
if (false === $ret) {
|
|
||||||
throw new \RuntimeException('Aborted');
|
|
||||||
}
|
|
||||||
$ret = trim($ret);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$ret = trim($this->autocomplete($output, $question, $inputStream));
|
$ret = trim($this->autocomplete($output, $question, $inputStream));
|
||||||
@ -423,6 +419,30 @@ class QuestionHelper extends Helper
|
|||||||
return self::$shell;
|
return self::$shell;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reads user input.
|
||||||
|
*
|
||||||
|
* @param resource $stream The input stream
|
||||||
|
*
|
||||||
|
* @return string User input
|
||||||
|
*
|
||||||
|
* @throws \RuntimeException
|
||||||
|
*/
|
||||||
|
private function readFromInput($stream)
|
||||||
|
{
|
||||||
|
if (STDIN === $stream && function_exists('readline')) {
|
||||||
|
$ret = readline();
|
||||||
|
} else {
|
||||||
|
$ret = fgets($stream, 4096);
|
||||||
|
|
||||||
|
if (false === $ret) {
|
||||||
|
throw new \RuntimeException('Aborted');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return trim($ret);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether Stty is available or not.
|
* Returns whether Stty is available or not.
|
||||||
*
|
*
|
||||||
|
Reference in New Issue
Block a user