/** * @depends testRegisteredArguments * @depends testRegisteredOptions */ public function testParse() { $params = new Parameters(); $params->registerArgument('action'); $params->registerOption('help', 'h', Parameters::VALUE_NO); $params->registerOption('verbose', 'v', Parameters::VALUE_NO); $params->registerOption('no', null, Parameters::VALUE_NO); $params->registerOption('name', null, Parameters::VALUE_YES); $params->registerOption('name2', null, Parameters::VALUE_YES); $params->registerOption('opt1', null, Parameters::VALUE_OPTIONAL); $params->registerOption('opt2', null, Parameters::VALUE_OPTIONAL); $_SERVER['argv'] = array('file.php', 'doIt', '-hv', '--name=Christian', '--opt1', '--opt2=value'); $params->parse(); $this->assertEquals('file.php', $params->getExecutedFile()); $this->assertEquals('doIt', $params->get('action')); $this->assertTrue($params->get('help')); $this->assertTrue($params->get('verbose')); $this->assertNull($params->get('no')); $this->assertEquals('Christian', $params->get('name')); $this->assertNull($params->get('name2')); $this->assertTrue($params->get('opt1')); $this->assertEquals('value', $params->get('opt2')); $this->assertNull($params->get('nope')); }
/** * Show the help message. * * @param Parameters $params * * @return void */ protected function showHelp(Parameters $params) { $table = new SimpleTable(); $table->border = false; $table->padding = 3; $executedFile = basename($params->getExecutedFile()); $arguments = $params->getRegisteredArguments(); $argsUsage = ''; $argsRows = []; foreach ($arguments as $arg) { $argsUsage .= ' <' . $arg['name'] . '>'; $argsRows[] = [$arg['name'], $arg['description']]; } $this->outln('Usage: ' . $executedFile . $argsUsage); // show possible arguments if ($argsRows) { $table->addRow([]); $table->addRow(['Arguments:']); foreach ($argsRows as $row) { $table->addRow($row); } } // show possible options $options = $params->getRegisteredOptions(); if ($options) { $table->addRow([]); $table->addRow(['Options:']); foreach ($options as $opt) { $val = ''; switch ($opt['valueFlag']) { case Parameters::VALUE_YES: $val = '=<value>'; break; case Parameters::VALUE_OPTIONAL: $val = '[=<value>]'; break; } $def = '--' . $opt['name'] . $val; if ($opt['short']) { $def .= ' -' . $opt['short'] . $val; } $table->addRow([$def, $opt['description']]); } } $this->outln($table->getTable()); }