/** * Parse the cli-arguments * * @param array $aParameters * @param \Mergy\TextUI\Command $oMergy * * @return array */ public static function parse(array $aParameters = array(), \Mergy\TextUI\Command $oMergy) { try { $oOpts = new \GetOptionKit\GetOptionKit(); $oOpts->add('c|config?', 'Set the config file'); $oOpts->add('v|verbose', 'Toggle verbose mode'); $oOpts->add('h|help', 'Show help'); $oOpts->add('version', 'Show the version'); $oOpts->add('r|rev?', 'Specific revision(s) to merge'); $oOpts->add('t|ticket?', 'Specific ticket(s) to merge'); $oOpts->add('force', 'Force merging'); $oOpts->add('strict', 'No guessing, eg. !merge'); $oOpts->add('remote?', 'Define the remote source'); $oOpts->add('f|formatter?', 'The unmerged-rev listing formatter'); $oOpts->add('p|path?', 'The merge-path (wc)'); $oOpts->add('continue', 'Continue - do not revert wc'); $oOpts->add('more', 'There is more coming, to not commit'); $oOpts->add('commit', 'Commit after success'); $oOpts->add('unattended', 'No questions'); $oOpts->add('reintegrate', 'Use the reintegrate option'); $oOpts->add('list', 'Show unmerged revisions as list'); $oOpts->add('list-group', 'Group unmerged revisions by ticket'); $oOpts->add('diff', 'Create a review diff'); $oOpts->add('all', 'Use all unmerged revisions'); $oOpts->add('diff-all', 'Equals --diff --all'); try { $oResult = $oOpts->parse($aParameters); } catch (\Exception $oParseException) { \Mergy\TextUI\Output::error($oParseException->getMessage()); return false; } if (empty($oResult->keys) !== true) { foreach ($oResult as $sOption => $mValue) { switch ($sOption) { case 'rev': self::$_aArguments['cliRevisions'] = $mValue; break; case 'ticket': self::$_aArguments['tickets'] = $mValue; break; case 'force': self::$_aArguments['strict'] = false; if (empty($option) !== true) { self::$_aArguments['force-comment'] = $mValue; } break; case 'strict': self::$_aArguments['strict'] = true; break; case 'remote': self::$_aArguments['remote'] = $mValue; break; case 'config': self::$_aArguments['config'] = $mValue; break; case 'path': self::$_aArguments['path'] = $mValue; break; case 'formatter': self::$_aArguments['formatter'] = $mValue; break; case 'more': self::$_aArguments['more'] = true; break; case 'continue': self::$_aArguments['continue'] = true; break; case 'commit': self::$_aArguments['continue'] = true; self::$_aArguments['commit'] = true; break; case 'unattended': self::$_aArguments['unattended'] = true; break; case 'reintegrate': self::$_aArguments['reintegrate'] = true; break; case 'verbose': self::$_aArguments['verbose'] = true; break; case 'list': self::$_aArguments['list'] = true; break; case 'list-group': self::$_aArguments['list'] = true; self::$_aArguments['group'] = true; break; case 'diff': self::$_aArguments['diff'] = true; break; case 'all': self::$_aArguments['all'] = true; break; case 'diff-all': self::$_aArguments['diff'] = true; self::$_aArguments['all'] = true; break; case 'help': $oMergy::showHelp(); throw new Parameter\Exception(Parameter\Exception::NO_PARSING); case 'version': $oMergy::printVersionString(); throw new Parameter\Exception(Parameter\Exception::NO_PARSING); default: throw new \InvalidArgumentException('Unknown option'); break; } } } else { self::$_aArguments['all'] = true; self::$_aArguments['list'] = true; self::$_aArguments['group'] = true; self::$_aArguments['continue'] = true; } } catch (\InvalidArgumentException $e) { \Mergy\TextUI\Output::info($e->getMessage()); } unset($oConsole); return self::$_aArguments; }
/** * This is meant to be called once in the constructor */ protected function create_option_kit() { if (isset($this->optionKit) && is_a($this->optionKit, "GetOptionKit")) { return $this->optionKit; // don't generate again } $specs = new \GetOptionKit\GetOptionKit(); $specs->add('h|help', "Prints help and usage information for the GR tool."); $this->optionKit = $specs; return $specs; }
public function testIntegerTypeNumericWithEqualSign() { $opt = new \GetOptionKit\GetOptionKit(); $opt->add('b|bar:=number', 'option with integer type'); $spec = $opt->get('bar'); $this->assertTrue($spec->isTypeNumber()); $result = $opt->parse(explode(' ', '-b=123123')); $this->assertNotNull($result); $this->assertNotNull($result->bar); $this->assertEquals(123123, $result->bar); }
/** * This method should be extended in subclasses to * return options relevant to that command */ protected static function option_kit() { $specs = new \GetOptionKit\GetOptionKit(); $specs->add('h|help', "Prints help and usage information for this subcommand."); return $specs; }