/**
* Publish resources
*
* This command publishes the resources of the given or - if none was specified, all - resource collections
* to their respective configured publishing targets.
*
* @param string $collection If specified, only resources of this collection are published. Example: 'persistent'
* @return void
*/
public function publishCommand($collection = null)
{
try {
if ($collection === null) {
$collections = $this->resourceManager->getCollections();
} else {
$collections = [];
$collections[$collection] = $this->resourceManager->getCollection($collection);
if ($collections[$collection] === null) {
$this->outputLine('Collection "%s" does not exist.', [$collection]);
$this->quit(1);
}
}
foreach ($collections as $collection) {
/** @var CollectionInterface $collection */
$this->outputLine('Publishing resources of collection "%s"', [$collection->getName()]);
$target = $collection->getTarget();
$target->publishCollection($collection, function ($iteration) {
$this->clearState($iteration);
});
}
if ($this->messageCollector->hasMessages()) {
$this->outputLine();
$this->outputLine('The resources were published, but a few inconsistencies were detected. You can check and probably fix the integrity of the resource registry by using the resource:clean command.');
$this->messageCollector->flush(function (Message $notification) {
$this->outputLine($notification->getSeverity() . ': ' . $notification->getMessage());
});
}
} catch (Exception $exception) {
$this->outputLine();
$this->outputLine('An error occurred while publishing resources (see full description below). You can check and probably fix the integrity of the resource registry by using the resource:clean command.');
$this->outputLine('%s (Exception code: %s)', [get_class($exception), $exception->getCode()]);
$this->outputLine($exception->getMessage());
$this->quit(1);
}
}