Exemplo n.º 1
0
 /**
  * @param	ThemePkgInterface $theme
  * @return	null
  */
 protected function buildTheme(PkgNameInterface $themePkgName, FileReaderInterface $reader, FileWriterInterface $writer, FileStackInterface $pageStack)
 {
     $themeName = $themePkgName->getName();
     $vendorName = $themePkgName->getVendor();
     $vendor = ResourceTreeManager::loadVendor($vendorName);
     $version = $vendor->getVersion();
     $pkgPath = $vendor->getPackagePath();
     $buildDir = "build/{$vendorName}/{$version}";
     $themeDir = "{$buildDir}/theme/{$themeName}/css";
     $pkg = ResourceTreeManager::getPkg($themePkgName);
     $finder = $reader->getFileFinder();
     if (!$finder->isDir($themeDir)) {
         if (!$writer->mkdir($themeDir, 0755, true)) {
             $path = $finder->getPath($themeDir);
             $err = "could not create dir at -({$path})";
             throw new RunTimeException($err);
         }
     }
     if ($pkg->isCssFiles()) {
         $list = $pkg->getCssFiles($pkgPath);
         $result = $this->makeString('css', $list, $reader, $pageStack);
         $writer->putContent($result, "{$themeDir}/{$themeName}.css");
     }
     if ($pkg->isAssetFiles()) {
         $list = $pkg->getAssetFiles();
         $assetBuildDir = "{$buildDir}/{$pkg->getAssetDir()}";
         if (!$finder->isDir($assetBuildDir)) {
             if (!$writer->mkdir($assetBuildDir, 0755, true)) {
                 $path = $finder->getPath($assetBuildDir);
                 $err = "could not create dir at -({$path})";
                 throw new RunTimeException($err);
             }
         }
         foreach ($list as $file) {
             $themeDir = "{$pkgPath}/{$pkg->getPath()}";
             $src = "{$pkgPath}/{$file}";
             $dest = "{$buildDir}/{$file}";
             $result = $writer->copy($src, $dest);
         }
     }
 }