Seditio Source
Root |
./othercms/croogo-4.0.7/vendor/cakephp/cakephp/src/Shell/CommandListShell.php
<?php
/**
 * CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
 * @link          https://cakephp.org CakePHP Project
 * @since         2.0.0
 * @license       https://opensource.org/licenses/mit-license.php MIT License
 */
namespace Cake\Shell;

use
Cake\Console\ConsoleOutput;
use
Cake\Console\Shell;
use
Cake\Core\Configure;
use
Cake\Core\Plugin;
use
Cake\Utility\Inflector;
use
SimpleXMLElement;

/**
 * Shows a list of commands available from the console.
 *
 * @property \Cake\Shell\Task\CommandTask $Command
 * @deprecated 3.5.0 Replaced by Cake\Shell\HelpShell
 */
class CommandListShell extends Shell
{
   
/**
     * Contains tasks to load and instantiate
     *
     * @var array
     */
   
public $tasks = ['Command'];

   
/**
     * Displays a header for the shell
     *
     * @return void
     */
   
protected function _welcome()
    {
       
$this->out();
       
$this->out(sprintf('<info>Welcome to CakePHP %s Console</info>', 'v' . Configure::version()));
       
$this->hr();
       
$this->out(sprintf('App : %s', APP_DIR));
       
$this->out(sprintf('Path: %s', APP));
       
$this->out(sprintf('PHP : %s', PHP_VERSION));
       
$this->hr();
    }

   
/**
     * startup
     *
     * @return void
     */
   
public function startup()
    {
        if (!
$this->param('xml') && !$this->param('version')) {
           
parent::startup();
        }
    }

   
/**
     * Main function Prints out the list of shells.
     *
     * @return void
     */
   
public function main()
    {
        if (!
$this->param('xml') && !$this->param('version')) {
           
$this->out('<info>Current Paths:</info>', 2);
           
$this->out('* app:  ' . APP_DIR . DIRECTORY_SEPARATOR);
           
$this->out('* root: ' . ROOT . DIRECTORY_SEPARATOR);
           
$this->out('* core: ' . CORE_PATH);
           
$this->out('');

           
$this->out('<info>Available Shells:</info>', 2);
        }

        if (
$this->param('version')) {
           
$this->out(Configure::version());

            return;
        }

       
$shellList = $this->Command->getShellList();
        if (!
$shellList) {
            return;
        }

        if (!
$this->param('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('[<info>%s</info>] %s', $plugin, implode(', ', $commands)));
           
$this->out();
        }

       
$this->out('To run an app or core command, type <info>`cake shell_name [args]`</info>');
       
$this->out('To run a plugin command, type <info>`cake Plugin.shell_name [args]`</info>');
       
$this->out('To get help on a specific command, type <info>`cake shell_name --help`</info>', 2);
    }

   
/**
     * Output as XML
     *
     * @param array $shellList The shell list.
     * @return void
     */
   
protected function _asXml($shellList)
    {
       
$plugins = Plugin::loaded();
       
$shells = new SimpleXMLElement('<shells></shells>');
        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->_io->setOutputAs(ConsoleOutput::RAW);
       
$this->out($shells->saveXML());
    }

   
/**
     * Gets the option parser instance and configures it.
     *
     * @return \Cake\Console\ConsoleOptionParser
     */
   
public function getOptionParser()
    {
       
$parser = parent::getOptionParser();

       
$parser->setDescription(
           
'Get the list of available shells for this CakePHP application.'
       
)->addOption('xml', [
           
'help' => 'Get the listing as XML.',
           
'boolean' => true,
        ])->
addOption('version', [
           
'help' => 'Prints the currently installed version of CakePHP. (deprecated - use `cake --version` instead)',
           
'boolean' => true,
        ]);

        return
$parser;
    }
}