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"); }
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"); }
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'); }
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; }