/**
  * Dynamically adds options to this task based on the current route.
  *
  * @param sfCommandManager $commandManager
  * @param array            $options        Options as read from commandline
  *
  * @return void
  * @see sfTask
  */
 protected function process(sfCommandManager $commandManager, $options)
 {
     $commandManager->process($options);
     if (array_key_exists('application', $commandManager->getArgumentValues()) && array_key_exists('sf_route', $commandManager->getArgumentValues())) {
         $application = $commandManager->getArgumentValue('application');
         $routeName = $commandManager->getArgumentValue('sf_route');
         $configuration = $this->createConfiguration($application, 'prod');
         $this->route = sfImageTransformExtraPluginConfiguration::getRoute($routeName, $configuration);
         $routeVariables = array_keys($this->route->getVariables());
         $this->options = array();
         $optionSet = new sfCommandOptionSet();
         foreach ($commandManager->getErrors() as $error) {
             if (preg_match('/"--([\\w-_]+)"/', $error, $matches) && in_array($matches[1], $routeVariables)) {
                 $option = new sfCommandOption($matches[1], null, sfCommandOption::PARAMETER_OPTIONAL, '', null);
                 $this->options[] = $option;
                 $optionSet->addOption($option);
             }
         }
         $commandManager->setOptionSet($optionSet);
     }
     parent::process($commandManager, $options);
 }
コード例 #2
0
$manager = new sfCommandManager($argumentSet, $optionSet);
$t->is($manager->getOptionSet(), $optionSet, '__construct() can take a sfCommandOptionSet as its second argument');

// ->setArgumentSet() ->getArgumentSet()
$t->diag('->setArgumentSet() ->getArgumentSet()');
$manager = new sfCommandManager(new sfCommandArgumentSet());
$argumentSet = new sfCommandArgumentSet();
$manager->setArgumentSet($argumentSet);
$t->is($manager->getArgumentSet(), $argumentSet, '->setArgumentSet() sets the manager argument set');

// ->setOptionSet() ->getOptionSet()
$t->diag('->setOptionSet() ->getOptionSet()');
$manager = new sfCommandManager(new sfCommandArgumentSet());
$optionSet = new sfCommandOptionSet();
$manager->setOptionSet($optionSet);
$t->is($manager->getOptionSet(), $optionSet, '->setOptionSet() sets the manager option set');

// ->process()
$t->diag('->process()');
$argumentSet = new sfCommandArgumentSet(array(
  new sfCommandArgument('foo1', sfCommandArgument::REQUIRED),
  new sfCommandArgument('foo2', sfCommandArgument::OPTIONAL | sfCommandArgument::IS_ARRAY),
));
$optionSet = new sfCommandOptionSet(array(
  new sfCommandOption('foo1', null, sfCommandOption::PARAMETER_NONE),
  new sfCommandOption('foo2', 'f', sfCommandOption::PARAMETER_NONE),
  new sfCommandOption('foo3', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default3'),
  new sfCommandOption('foo4', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default4'),
  new sfCommandOption('foo5', null, sfCommandOption::PARAMETER_OPTIONAL, '', 'default5'),
  new sfCommandOption('foo6', 'r', sfCommandOption::PARAMETER_REQUIRED, '', 'default5'),