/
IntegrationShell.php
88 lines (76 loc) · 2.1 KB
/
IntegrationShell.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?php
/**
* IntegrationShell file
*
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (http://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. (http://cakefoundation.org)
* @link http://cakephp.org CakePHP(tm) Project
* @since 1.5.0
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
/**
* IntegrationShell
*/
namespace TestApp\Shell;
use Cake\Console\ConsoleOptionParser;
use Cake\Console\Shell;
class IntegrationShell extends Shell
{
/**
* Option parser
*
* @return ConsoleOptionParser
*/
public function getOptionParser()
{
$parser = new ConsoleOptionParser();
$argAndOptionParser = (new ConsoleOptionParser())
->addArgument('arg', [
'required' => true
])
->addOption('opt', [
'short' => 'o'
]);
$parser
->addSubcommand('argsAndOptions', [
'parser' => $argAndOptionParser
])
->addSubcommand('bridge');
return $parser;
}
/**
* Bridge of Death question
*
* @return void
*/
public function bridge()
{
$name = $this->in('What is your name');
if ($name !== 'cake') {
$this->err('No!');
$this->_stop(Shell::CODE_ERROR);
}
$color = $this->in('What is your favorite color?');
if ($color !== 'blue') {
$this->err('Wrong! <blink>Aaaahh</blink>');
$this->_stop(Shell::CODE_ERROR);
}
$this->out('You may pass.');
}
/**
* A sub command that requires an argument and has an option
*
* @return void
*/
public function argsAndOptions()
{
$this->out('arg: ' . $this->args[0]);
$this->out('opt: ' . $this->param('opt'));
}
}