mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-01-19 02:56:15 +00:00
Adding addSubcommands, and support for subcommands to buildFromArray.
This makes the API consistent across all the elements of ConsoleOptionParser.
This commit is contained in:
parent
577603fbd9
commit
0fd8d2b8e4
2 changed files with 41 additions and 0 deletions
|
@ -161,6 +161,9 @@ class ConsoleOptionParser {
|
||||||
* ),
|
* ),
|
||||||
* 'options' => array(
|
* 'options' => array(
|
||||||
* // list of options compatible with addOptions
|
* // list of options compatible with addOptions
|
||||||
|
* ),
|
||||||
|
* 'subcommands' => array(
|
||||||
|
* // list of subcommands to add.
|
||||||
* )
|
* )
|
||||||
* );
|
* );
|
||||||
* }}}
|
* }}}
|
||||||
|
@ -176,6 +179,9 @@ class ConsoleOptionParser {
|
||||||
if (!empty($spec['options'])) {
|
if (!empty($spec['options'])) {
|
||||||
$parser->addOptions($spec['options']);
|
$parser->addOptions($spec['options']);
|
||||||
}
|
}
|
||||||
|
if (!empty($spec['subcommands'])) {
|
||||||
|
$parser->addSubcommands($spec['subcommands']);
|
||||||
|
}
|
||||||
if (!empty($spec['description'])) {
|
if (!empty($spec['description'])) {
|
||||||
$parser->description($spec['description']);
|
$parser->description($spec['description']);
|
||||||
}
|
}
|
||||||
|
@ -362,6 +368,19 @@ class ConsoleOptionParser {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add multiple subcommands at once.
|
||||||
|
*
|
||||||
|
* @param array $commands Array of subcommands.
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function addSubcommands(array $commands) {
|
||||||
|
foreach ($commands as $name => $params) {
|
||||||
|
$this->addSubcommand($name, $params);
|
||||||
|
}
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the arguments defined in the parser.
|
* Gets the arguments defined in the parser.
|
||||||
*
|
*
|
||||||
|
|
|
@ -323,6 +323,22 @@ class ConsoleOptionParserTest extends CakeTestCase {
|
||||||
$this->assertEquals($parser, $result, 'Adding a subcommand is not chainable');
|
$this->assertEquals($parser, $result, 'Adding a subcommand is not chainable');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test adding multiple subcommands
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
function testAddSubcommands() {
|
||||||
|
$parser = new ConsoleOptionParser();
|
||||||
|
$result = $parser->addSubcommands(array(
|
||||||
|
'initdb' => array('help' => 'Initialize the database'),
|
||||||
|
'create' => array('help' => 'Create something')
|
||||||
|
));
|
||||||
|
$this->assertEquals($parser, $result, 'Adding a subcommands is not chainable');
|
||||||
|
$result = $parser->subcommands();
|
||||||
|
$this->assertEquals(2, count($result), 'Not enough subcommands');
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* test getting help with defined options.
|
* test getting help with defined options.
|
||||||
*
|
*
|
||||||
|
@ -523,6 +539,9 @@ TEXT;
|
||||||
'name' => array('help' => 'The name'),
|
'name' => array('help' => 'The name'),
|
||||||
'other' => array('help' => 'The other arg')
|
'other' => array('help' => 'The other arg')
|
||||||
),
|
),
|
||||||
|
'subcommands' => array(
|
||||||
|
'initdb' => array('help' => 'make database')
|
||||||
|
),
|
||||||
'description' => 'description text',
|
'description' => 'description text',
|
||||||
'epilog' => 'epilog text'
|
'epilog' => 'epilog text'
|
||||||
);
|
);
|
||||||
|
@ -537,6 +556,9 @@ TEXT;
|
||||||
|
|
||||||
$args = $parser->arguments();
|
$args = $parser->arguments();
|
||||||
$this->assertEquals(2, count($args));
|
$this->assertEquals(2, count($args));
|
||||||
|
|
||||||
|
$commands = $parser->subcommands();
|
||||||
|
$this->assertEquals(1, count($commands));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Add table
Reference in a new issue