params['xml'])) { parent::startup(); } } /** * Main function Prints out the list of shells. * * @return void */ public function main() { if (empty($this->params['xml'])) { $this->out(__d('cake_console', "Current Paths:"), 2); $this->out(" -app: " . APP_DIR); $this->out(" -working: " . rtrim(APP, DS)); $this->out(" -root: " . rtrim(ROOT, DS)); $this->out(" -core: " . rtrim(CORE_PATH, DS)); $this->out(" -webroot: " . rtrim(WWW_ROOT, DS)); $this->out(""); $this->out(__d('cake_console', "Changing Paths:"), 2); $this->out(__d('cake_console', "Your working path should be the same as your application path. To change your path use the '-app' param.")); $this->out(__d('cake_console', "Example: %s or %s", '-app relative/path/to/myapp', '-app /absolute/path/to/myapp'), 2); $this->out(__d('cake_console', "Available Shells:"), 2); } $shellList = $this->Command->getShellList(); if (empty($shellList)) { return; } if (empty($this->params['xml'])) { $this->_asText($shellList); } else { $this->_asXml($shellList); } } /** * Output text. * * @param array $shellList The shell list. * @return void */ protected function _asText($shellList) { foreach ($shellList as $plugin => $commands) { sort($commands); $this->out(sprintf('[%s] %s', $plugin, implode(', ', $commands))); $this->out(); } $this->out(__d('cake_console', "To run an app or core command, type cake shell_name [args]")); $this->out(__d('cake_console', "To run a plugin command, type cake Plugin.shell_name [args]")); $this->out(__d('cake_console', "To get help on a specific command, type cake shell_name --help"), 2); } /** * Output as XML * * @param array $shellList The shell list. * @return void */ protected function _asXml($shellList) { $plugins = CakePlugin::loaded(); $shells = new SimpleXmlElement(''); foreach ($shellList as $plugin => $commands) { foreach ($commands as $command) { $callable = $command; if (in_array($plugin, $plugins)) { $callable = Inflector::camelize($plugin) . '.' . $command; } $shell = $shells->addChild('shell'); $shell->addAttribute('name', $command); $shell->addAttribute('call_as', $callable); $shell->addAttribute('provider', $plugin); $shell->addAttribute('help', $callable . ' -h'); } } $this->stdout->outputAs(ConsoleOutput::RAW); $this->out($shells->saveXml()); } /** * Gets the option parser instance and configures it. * * @return ConsoleOptionParser */ public function getOptionParser() { $parser = parent::getOptionParser(); $parser->description( __d('cake_console', 'Get the list of available shells for this CakePHP application.') )->addOption('sort', array( 'help' => __d('cake_console', 'Does nothing (deprecated)'), 'boolean' => true ))->addOption('xml', array( 'help' => __d('cake_console', 'Get the listing as XML.'), 'boolean' => true )); return $parser; } }