Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
16591 anikendra 1
<?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
}