filesystem = $filesystem; $this->materializationStrategyFactory = $materializationStrategyFactory; $this->writeFactory = $writeFactory; } /** * @param Asset\LocalInterface $asset * @return bool */ public function publish(Asset\LocalInterface $asset) { $dir = $this->filesystem->getDirectoryRead(DirectoryList::STATIC_VIEW); if ($dir->isExist($asset->getPath())) { return true; } return $this->publishAsset($asset); } /** * Publish the asset * * @param Asset\LocalInterface $asset * @return bool */ private function publishAsset(Asset\LocalInterface $asset) { $targetDir = $this->filesystem->getDirectoryWrite(DirectoryList::STATIC_VIEW); $fullSource = $asset->getSourceFile(); $source = basename($fullSource); $sourceDir = $this->writeFactory->create(dirname($fullSource)); $destination = $asset->getPath(); $strategy = $this->materializationStrategyFactory->create($asset); return $strategy->publishFile($sourceDir, $targetDir, $source, $destination); } }