pictcode / lib / Cake / Console / Command / CompletionShell.php @ f4a6dc2c
履歴 | 表示 | アノテート | ダウンロード (3.562 KB)
| 1 | 635eef61 | spyder1211 | <?php
 | 
      
|---|---|---|---|
| 2 | /**
 | 
      ||
| 3 |  * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 | 
      ||
| 4 |  * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 5 |  *
 | 
      ||
| 6 |  * Licensed under The MIT License
 | 
      ||
| 7 |  * For full copyright and license information, please see the LICENSE.txt
 | 
      ||
| 8 |  * Redistributions of files must retain the above copyright notice.
 | 
      ||
| 9 |  *
 | 
      ||
| 10 |  * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 | 
      ||
| 11 |  * @link          http://cakephp.org CakePHP Project
 | 
      ||
| 12 |  * @package       Cake.Console.Command
 | 
      ||
| 13 |  * @since         CakePHP v 2.5
 | 
      ||
| 14 |  * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 | 
      ||
| 15 |  */
 | 
      ||
| 16 | |||
| 17 | App::uses('AppShell', 'Console/Command');  | 
      ||
| 18 | |||
| 19 | /**
 | 
      ||
| 20 |  * Provide command completion shells such as bash.
 | 
      ||
| 21 |  * 
 | 
      ||
| 22 |  * @package       Cake.Console.Command
 | 
      ||
| 23 |  */
 | 
      ||
| 24 | class CompletionShell extends AppShell {  | 
      ||
| 25 | |||
| 26 | /**
 | 
      ||
| 27 |  * Contains tasks to load and instantiate
 | 
      ||
| 28 |  *
 | 
      ||
| 29 |  * @var array
 | 
      ||
| 30 |  */
 | 
      ||
| 31 | public $tasks = array('Command');  | 
      ||
| 32 | |||
| 33 | /**
 | 
      ||
| 34 |  * Echo no header by overriding the startup method
 | 
      ||
| 35 |  *
 | 
      ||
| 36 |  * @return void
 | 
      ||
| 37 |  */
 | 
      ||
| 38 | public function startup() {  | 
      ||
| 39 | }  | 
      ||
| 40 | |||
| 41 | /**
 | 
      ||
| 42 |  * Not called by the autocomplete shell - this is for curious users
 | 
      ||
| 43 |  *
 | 
      ||
| 44 |  * @return void
 | 
      ||
| 45 |  */
 | 
      ||
| 46 | public function main() {  | 
      ||
| 47 | return $this->out($this->getOptionParser()->help());  | 
      ||
| 48 | }  | 
      ||
| 49 | |||
| 50 | /**
 | 
      ||
| 51 |  * list commands
 | 
      ||
| 52 |  *
 | 
      ||
| 53 |  * @return void
 | 
      ||
| 54 |  */
 | 
      ||
| 55 | public function commands() {  | 
      ||
| 56 | $options = $this->Command->commands();  | 
      ||
| 57 | return $this->_output($options);  | 
      ||
| 58 | }  | 
      ||
| 59 | |||
| 60 | /**
 | 
      ||
| 61 |  * list options for the named command
 | 
      ||
| 62 |  *
 | 
      ||
| 63 |  * @return void
 | 
      ||
| 64 |  */
 | 
      ||
| 65 | public function options() {  | 
      ||
| 66 | $commandName = '';  | 
      ||
| 67 | if (!empty($this->args[0])) {  | 
      ||
| 68 | $commandName = $this->args[0];  | 
      ||
| 69 | }  | 
      ||
| 70 | $options = $this->Command->options($commandName);  | 
      ||
| 71 | |||
| 72 | return $this->_output($options);  | 
      ||
| 73 | }  | 
      ||
| 74 | |||
| 75 | /**
 | 
      ||
| 76 |  * list subcommands for the named command
 | 
      ||
| 77 |  *
 | 
      ||
| 78 |  * @return void
 | 
      ||
| 79 |  */
 | 
      ||
| 80 | public function subCommands() {  | 
      ||
| 81 | if (!$this->args) {  | 
      ||
| 82 | return $this->_output();  | 
      ||
| 83 | }  | 
      ||
| 84 | |||
| 85 | $options = $this->Command->subCommands($this->args[0]);  | 
      ||
| 86 | return $this->_output($options);  | 
      ||
| 87 | }  | 
      ||
| 88 | |||
| 89 | /**
 | 
      ||
| 90 |  * Guess autocomplete from the whole argument string
 | 
      ||
| 91 |  * 
 | 
      ||
| 92 |  * @return void
 | 
      ||
| 93 |  */
 | 
      ||
| 94 | public function fuzzy() {  | 
      ||
| 95 | return $this->_output();  | 
      ||
| 96 | }  | 
      ||
| 97 | |||
| 98 | /**
 | 
      ||
| 99 |  * Gets the option parser instance and configures it.
 | 
      ||
| 100 |  *
 | 
      ||
| 101 |  * @return ConsoleOptionParser
 | 
      ||
| 102 |  */
 | 
      ||
| 103 | public function getOptionParser() {  | 
      ||
| 104 | $parser = parent::getOptionParser();  | 
      ||
| 105 | |||
| 106 |                 $parser->description(
 | 
      ||
| 107 | __d('cake_console', 'Used by shells like bash to autocomplete command name, options and arguments')  | 
      ||
| 108 | )->addSubcommand('commands', array(  | 
      ||
| 109 | 'help' => __d('cake_console', 'Output a list of available commands'),  | 
      ||
| 110 | 'parser' => array(  | 
      ||
| 111 | 'description' => __d('cake_console', 'List all availables'),  | 
      ||
| 112 | 'arguments' => array(  | 
      ||
| 113 | )  | 
      ||
| 114 | )  | 
      ||
| 115 | ))->addSubcommand('subcommands', array(  | 
      ||
| 116 | 'help' => __d('cake_console', 'Output a list of available subcommands'),  | 
      ||
| 117 | 'parser' => array(  | 
      ||
| 118 | 'description' => __d('cake_console', 'List subcommands for a command'),  | 
      ||
| 119 | 'arguments' => array(  | 
      ||
| 120 | 'command' => array(  | 
      ||
| 121 | 'help' => __d('cake_console', 'The command name'),  | 
      ||
| 122 | 'required' => true,  | 
      ||
| 123 | )  | 
      ||
| 124 | )  | 
      ||
| 125 | )  | 
      ||
| 126 | ))->addSubcommand('options', array(  | 
      ||
| 127 | 'help' => __d('cake_console', 'Output a list of available options'),  | 
      ||
| 128 | 'parser' => array(  | 
      ||
| 129 | 'description' => __d('cake_console', 'List options'),  | 
      ||
| 130 | 'arguments' => array(  | 
      ||
| 131 | 'command' => array(  | 
      ||
| 132 | 'help' => __d('cake_console', 'The command name'),  | 
      ||
| 133 | 'required' => false,  | 
      ||
| 134 | )  | 
      ||
| 135 | )  | 
      ||
| 136 | )  | 
      ||
| 137 | ))->epilog(  | 
      ||
| 138 | __d('cake_console', 'This command is not intended to be called manually')  | 
      ||
| 139 | );  | 
      ||
| 140 | |||
| 141 | return $parser;  | 
      ||
| 142 | }  | 
      ||
| 143 | |||
| 144 | /**
 | 
      ||
| 145 |  * Emit results as a string, space delimited
 | 
      ||
| 146 |  *
 | 
      ||
| 147 |  * @param array $options The options to output
 | 
      ||
| 148 |  * @return void
 | 
      ||
| 149 |  */
 | 
      ||
| 150 | protected function _output($options = array()) {  | 
      ||
| 151 | if ($options) {  | 
      ||
| 152 | return $this->out(implode($options, ' '));  | 
      ||
| 153 | }  | 
      ||
| 154 | }  | 
      ||
| 155 | }  |