public function handleList(Args $args, IO $io) { $table = new Table(TableStyle::borderless()); $targets = $this->targetManager->getTargets(); if ($targets->isEmpty()) { $io->writeLine('No install targets. Use "puli target add <name> <directory>" to add a target.'); return 0; } $defaultTarget = $targets->getDefaultTarget(); foreach ($targets as $target) { $parameters = ''; foreach ($target->getParameterValues() as $name => $value) { $parameters .= "\n<c1>" . $name . '=' . StringUtil::formatValue($value) . '</c1>'; } $table->addRow(array($defaultTarget === $target ? '*' : '', '<u>' . $target->getName() . '</u>', $target->getInstallerName(), '<c2>' . $target->getLocation() . '</c2>' . $parameters, '<c1>' . $target->getUrlFormat() . '</c1>')); } $table->render($io); return 0; }
public function addCreateUrlGeneratorMethod(Clazz $class) { $class->addImport(new Import('Puli\\Discovery\\Api\\ResourceDiscovery')); $class->addImport(new Import('Puli\\AssetPlugin\\Api\\Factory\\UrlGeneratorFactory')); $class->addImport(new Import('Puli\\AssetPlugin\\Api\\Target\\InstallTargetCollection')); $class->addImport(new Import('Puli\\AssetPlugin\\Api\\UrlGenerator\\AssetUrlGenerator')); $class->addImport(new Import('Puli\\AssetPlugin\\UrlGenerator\\DiscoveryUrlGenerator')); $class->addImplementedInterface('UrlGeneratorFactory'); $method = new Method('createUrlGenerator'); $method->setDescription('Creates the URL generator.'); $arg = new Argument('discovery'); $arg->setTypeHint('ResourceDiscovery'); $arg->setType('ResourceDiscovery'); $arg->setDescription('The resource discovery to read from.'); $method->addArgument($arg); $method->setReturnValue(new ReturnValue('$generator', 'AssetUrlGenerator', 'The created URL generator.')); $targets = $this->targetManager->getTargets(); $targetsString = ''; foreach ($targets as $target) { $parameters = ''; foreach ($target->getParameterValues() as $name => $value) { $parameters .= sprintf("\n %s => %s,", var_export($name, true), var_export($value, true)); } if ($parameters) { $parameters .= "\n "; } $targetsString .= sprintf("\n new InstallTarget(%s, %s, %s, %s, array(%s)),", var_export($target->getName(), true), var_export($target->getInstallerName(), true), var_export($target->getLocation(), true), var_export($target->getUrlFormat(), true), $parameters); } if ($targetsString) { $class->addImport(new Import('Puli\\AssetPlugin\\Api\\Target\\InstallTarget')); $targetsString = "array({$targetsString}\n)"; } $method->addBody("\$targets = new InstallTargetCollection({$targetsString});"); if ($targetsString) { $method->addBody("\$targets->setDefaultTarget('{$targets->getDefaultTarget()->getName()}');"); } $method->addBody("\$generator = new DiscoveryUrlGenerator(\$discovery, \$targets);"); $class->addMethod($method); }