mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-18 18:46:17 +00:00
Moving ShellDispatcher::getInput() into Shell as a protected method.
This commit is contained in:
parent
67f03afa02
commit
e816a49a6f
2 changed files with 41 additions and 5 deletions
|
@ -19,6 +19,7 @@
|
|||
*/
|
||||
App::import('Shell', 'TaskCollection');
|
||||
require_once CAKE . 'console' . DS . 'console_output.php';
|
||||
require_once CAKE . 'console' . DS . 'console_input.php';
|
||||
|
||||
/**
|
||||
* Base class for command-line utilities for automating programmer chores.
|
||||
|
@ -158,7 +159,7 @@ class Shell extends Object {
|
|||
* Constructs this Shell instance.
|
||||
*
|
||||
*/
|
||||
function __construct(&$dispatch, $stdout = null, $stderr = null) {
|
||||
function __construct(&$dispatch, $stdout = null, $stderr = null, $stdin = null) {
|
||||
$vars = array('params', 'args', 'shell', 'shellCommand' => 'command', 'shellPaths');
|
||||
|
||||
foreach ($vars as $key => $var) {
|
||||
|
@ -182,12 +183,16 @@ class Shell extends Object {
|
|||
|
||||
$this->stdout = $stdout;
|
||||
$this->stderr = $stderr;
|
||||
$this->stdin = $stdin;
|
||||
if ($this->stdout == null) {
|
||||
$this->stdout = new ConsoleOutput('php://stdout');
|
||||
}
|
||||
if ($this->stderr == null) {
|
||||
$this->stderr = new ConsoleOutput('php://stderr');
|
||||
}
|
||||
if ($this->stdin == null) {
|
||||
$this->stdin = new ConsoleInput('php://stdin');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -305,7 +310,7 @@ class Shell extends Object {
|
|||
if (!$this->interactive) {
|
||||
return $default;
|
||||
}
|
||||
$in = $this->Dispatch->getInput($prompt, $options, $default);
|
||||
$in = $this->_getInput($prompt, $options, $default);
|
||||
|
||||
if ($options && is_string($options)) {
|
||||
if (strpos($options, ',')) {
|
||||
|
@ -318,7 +323,7 @@ class Shell extends Object {
|
|||
}
|
||||
if (is_array($options)) {
|
||||
while ($in == '' || ($in && (!in_array(strtolower($in), $options) && !in_array(strtoupper($in), $options)) && !in_array($in, $options))) {
|
||||
$in = $this->Dispatch->getInput($prompt, $options, $default);
|
||||
$in = $this->_getInput($prompt, $options, $default);
|
||||
}
|
||||
}
|
||||
if ($in) {
|
||||
|
@ -326,6 +331,39 @@ class Shell extends Object {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Prompts the user for input, and returns it.
|
||||
*
|
||||
* @param string $prompt Prompt text.
|
||||
* @param mixed $options Array or string of options.
|
||||
* @param string $default Default input value.
|
||||
* @return Either the default value, or the user-provided input.
|
||||
*/
|
||||
protected function _getInput($prompt, $options, $default) {
|
||||
if (!is_array($options)) {
|
||||
$printOptions = '';
|
||||
} else {
|
||||
$printOptions = '(' . implode('/', $options) . ')';
|
||||
}
|
||||
|
||||
if ($default === null) {
|
||||
$this->stdout->write($prompt . " $printOptions \n" . '> ', 0);
|
||||
} else {
|
||||
$this->stdout->write($prompt . " $printOptions \n" . "[$default] > ", 0);
|
||||
}
|
||||
$result = $this->stdin->read();
|
||||
|
||||
if ($result === false) {
|
||||
$this->_stop(1);
|
||||
}
|
||||
$result = trim($result);
|
||||
|
||||
if ($default != null && empty($result)) {
|
||||
return $default;
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Outputs a single or multiple messages to stdout. If no parameters
|
||||
* are passed outputs just a newline.
|
||||
|
|
|
@ -167,8 +167,6 @@ class ShellDispatcher {
|
|||
*
|
||||
*/
|
||||
protected function _initEnvironment() {
|
||||
$this->stdin = fopen('php://stdin', 'r');
|
||||
|
||||
if (!$this->__bootstrap()) {
|
||||
$message = "Unable to load CakePHP core.\nMake sure " . DS . 'cake' . DS . 'libs exists in ' . CAKE_CORE_INCLUDE_PATH;
|
||||
throw new RuntimeException($message);
|
||||
|
|
Loading…
Add table
Reference in a new issue