示例#1
0
 /**
  * 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;
 }
示例#2
0
 /**
  * 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;
 }