Skip to content
Permalink
Browse files

Make input prompt clearer in extract task.

Make the prompt display the paths that will be scanned.  Hopefully
this makes the shell a bit easier to use and understand. Also
make the shell not accept 0 paths as a correct answer.

Fixes #2877
  • Loading branch information...
markstory committed May 13, 2012
1 parent 15a7472 commit 8103eae9f114d428f7c4d1cb038c53baad5b0abc
Showing with 33 additions and 18 deletions.
  1. +33 −18 lib/Cake/Console/Command/Task/ExtractTask.php
@@ -104,6 +104,38 @@ class ExtractTask extends AppShell {
*/
protected $_validationDomain = 'default';
/**
* Method to interact with the User and get path selections.
*
* @return void
*/
protected function _getPaths() {
$defaultPath = APP;
while (true) {
$currentPaths = count($this->_paths) > 0 ? $this->_paths : array('None');
$message = __d(
'cake_console',
"Current paths: %s\nWhat is the path you would like to extract?\n[Q]uit [D]one",
implode(', ', $currentPaths)
);
$response = $this->in($message, null, $defaultPath);
if (strtoupper($response) === 'Q') {
$this->out(__d('cake_console', 'Extract Aborted'));
return $this->_stop();
} elseif (strtoupper($response) === 'D' && count($this->_paths)) {
$this->out();
return;
} elseif (strtoupper($response) === 'D') {
$this->err(__d('cake_console', '<warning>No directories selected.</warning> Please choose a directory.'));
} elseif (is_dir($response)) {
$this->_paths[] = $response;
$defaultPath = 'D';
} else {
$this->err(__d('cake_console', 'The directory path you supplied was not found. Please try again.'));
}
$this->out();
}
}
/**
* Execution method always used for tasks
*
@@ -126,24 +158,7 @@ public function execute() {
$this->_paths = array(CakePlugin::path($plugin));
$this->params['plugin'] = $plugin;
} else {
$defaultPath = APP;
$message = __d('cake_console', "What is the path you would like to extract?\n[Q]uit [D]one");
while (true) {
$response = $this->in($message, null, $defaultPath);
if (strtoupper($response) === 'Q') {
$this->out(__d('cake_console', 'Extract Aborted'));
$this->_stop();
} elseif (strtoupper($response) === 'D') {
$this->out();
break;
} elseif (is_dir($response)) {
$this->_paths[] = $response;
$defaultPath = 'D';
} else {
$this->err(__d('cake_console', 'The directory path you supplied was not found. Please try again.'));
}
$this->out();
}
$this->_getPaths();
}
if (!empty($this->params['exclude-plugins']) && $this->_isExtractingApp()) {

0 comments on commit 8103eae

Please sign in to comment.
You can’t perform that action at this time.