/** * Display help for this console. * * @return ConsoleOptionParser */ public function getOptionParser() { $parser = new ConsoleOptionParser('console'); $parser->description("This shell clean the cache of your application.")->command("cache.clear")->addOption('all', ['short' => 'a', 'help' => 'Clear all caches', 'boolean' => true])->addSubcommand('all', ['help' => 'Clear all caches']); foreach ($this->tasks as $task => $option) { $classname = $this->taskClassname($task); $parser->addSubcommand($this->taskName($task), ['help' => $this->{$classname}->help(), 'parser' => $this->{$classname}->getOptionParser()]); } return $parser; }
/** * test that help() outputs subcommands. * * @return void */ public function testXmlHelpSubcommand() { $parser = new ConsoleOptionParser('mycommand', false); $parser->addSubcommand('method', ['help' => 'This is another command'])->addOption('test', ['help' => 'A test option.']); $formatter = new HelpFormatter($parser); $result = $formatter->xml(); $expected = <<<xml <?xml version="1.0"?> <shell> <name>mycommand</name> <description/> <subcommands> \t<command name="method" help="This is another command" /> </subcommands> <options> \t<option name="--help" short="-h" help="Display this help." boolean="1"> \t\t<default></default> \t\t<choices></choices> \t</option> \t<option name="--test" short="" help="A test option." boolean="0"> \t\t<default></default> \t\t<choices></choices> \t</option> </options> <arguments/> <epilog/> </shell> xml; $this->assertXmlStringNotEqualsXmlString($expected, $result, 'Help does not match'); }
/** * test that runCommand will call runCommand on the task. * * @return void */ public function testRunCommandHittingTaskInSubcommand() { $parser = new ConsoleOptionParser('knife'); $parser->addSubcommand('slice'); $io = $this->getMock('Cake\\Console\\ConsoleIo'); $shell = $this->getMock('Cake\\Console\\Shell', ['hasTask', 'startup', 'getOptionParser'], [], '', false); $shell->io($io); $task = $this->getMock('Cake\\Console\\Shell', ['main', 'runCommand'], [], '', false); $task->io($io); $task->expects($this->once())->method('runCommand')->with(['one'], false); $shell->expects($this->once())->method('getOptionParser')->will($this->returnValue($parser)); $shell->expects($this->once())->method('startup'); $shell->expects($this->any())->method('hasTask')->will($this->returnValue(true)); $shell->Slice = $task; $shell->runCommand(['slice', 'one']); }
/** * test that help() with a command param shows the help for a subcommand * * @return void */ public function testHelpSubcommandHelp() { $subParser = new ConsoleOptionParser('method', false); $subParser->addOption('connection', ['help' => 'Db connection.']); $parser = new ConsoleOptionParser('mycommand', false); $parser->addSubcommand('method', ['help' => 'This is another command', 'parser' => $subParser])->addOption('test', ['help' => 'A test option.']); $result = $parser->help('method'); $expected = <<<TEXT <info>Usage:</info> cake mycommand method [-h] [--connection] <info>Options:</info> --help, -h Display this help. --connection Db connection. TEXT; $this->assertTextEquals($expected, $result, 'Help is not correct.'); }