public static function getPkg(PkgNameInterface $pkgName)
 {
     $vendor = $pkgName->getVendor();
     $factory = self::loadFactory($vendor);
     $type = $pkgName->getType();
     $name = $pkgName->getName();
     $pkg = null;
     if ('layer' === $type) {
         $data = ResourceTree::getLayer($vendor, $name);
         if (!isset($data['pkg'])) {
             $err = "pkg must be defined for layer -({$vendor}, {$name})";
             throw new DomainException($err);
         }
         if (!isset($data['filename'])) {
             $err = "filename must be defined for layer -({$vendor}, {$name})";
             throw new DomainException($err);
         }
         $pkg = $factory->createLayer($name, self::loadVendor($vendor));
         $pkg->setFilename($data['filename'])->setPackages($data['pkg']);
     } else {
         if (empty($type)) {
             $pkg = ResourceTree::getPackage($vendor, $name);
             if (is_array($pkg)) {
                 $pkg = $factory->createPkg($pkg, $vendor);
                 ResourceTree::setPackage($vendor, $name, $pkg);
             }
         } else {
             $pkg = ResourceTree::getPackageByType($vendor, $type, $name);
             if (is_array($pkg)) {
                 $pkg = $factory->createPkg($pkg, $vendor);
                 ResourceTree::setPackageByType($vendor, $type, $name, $pkg);
             }
         }
     }
     return $pkg;
 }
示例#2
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);
         }
     }
 }