Beispiel #1
0
 function execute($flavorName)
 {
     $logger = $this->getLogger();
     $formatter = $logger->getFormatter();
     $specs = new OptionSpecCollection();
     /* load flavor generator */
     $logger->info("Loading flavor {$flavorName}...");
     $loader = new Flavor\FlavorLoader();
     $flavor = $loader->load($flavorName);
     $generator = $flavor->getGenerator();
     $logger->info2("Inializing option specs...");
     $generator->options($specs);
     $generator->setLogger($this->getLogger());
     $deps = $generator->getDependencies();
     /*
     if( count($deps) )
         $logger->info("Dependencies: " . 
                 join(' ',array_keys($deps)) );
     */
     foreach ($deps as $depGenerator) {
         $depGenerator->logAction("dependency", get_class($depGenerator), 1);
         $args = $depGenerator->getOption()->getArguments();
         $this->runGenerator($depGenerator, $args);
     }
     /* use GetOptionKit to parse options from $args */
     $args = func_get_args();
     array_shift($args);
     $parser = new OptionParser($specs);
     $result = $parser->parse($args);
     /* pass rest arguments for generation */
     $generator->setOption($result);
     $logger->info("Running main generator...");
     $this->runGenerator($generator, $result->getArguments());
     $logger->info("Done");
 }
Beispiel #2
0
 function execute($nameOrPath)
 {
     if (file_exists($nameOrPath)) {
         $flavor = new FlavorDirectory($nameOrPath);
         $this->installFlavor($flavor);
     } else {
         $loader = new FlavorLoader();
         $flavor = $loader->load($nameOrPath);
         $this->installFlavor($flavor);
     }
     $this->getLogger()->info("Done");
 }
Beispiel #3
0
 public function execute($flavor)
 {
     $args = func_get_args();
     array_shift($args);
     $loader = new FlavorLoader(array(dirname(__DIR__) . '/Flavors'));
     if ($flavor = $loader->load($flavor)) {
         $generator = $flavor->getGenerator();
         $generator->setLogger($this->logger);
         $runner = new GeneratorRunner();
         $runner->logger = $this->logger;
         $runner->run($generator, $args);
     } else {
         throw new Exception("Flavor {$flavor} not found.");
     }
     $this->logger->info('Done');
 }
Beispiel #4
0
 public function getDependencies()
 {
     $depGenerators = array();
     $loader = new FlavorLoader();
     $logger = $this->getLogger();
     $deps = $this->dependency();
     foreach ($deps as $depName => $options) {
         /* swap for short dependency name */
         if (is_integer($depName)) {
             $depName = $options;
             $options = array();
         }
         $depFlavor = $loader->load($depName);
         if (!$depFlavor->exists()) {
             throw new Exception("Dependency flavor {$depName} not found.");
         }
         $depGenerator = $depFlavor->getGenerator();
         $depGenerator->setLogger($logger);
         $depSpecs = new OptionSpecCollection();
         $depGenerator->options($depSpecs);
         $depOptionResult = OptionResult::create($depSpecs, @$options['options'] ?: array(), @$options['arguments'] ?: array());
         $depGenerator->setOption($depOptionResult);
         $depGenerators[] = $depGenerator;
     }
     return $depGenerators;
 }