Exemplo n.º 1
0
 protected function triggerBakeEvent($eventName, $func)
 {
     foreach ($this->getProcessors() as $proc) {
         $start = microtime(true);
         $func($proc);
         $end = microtime(true);
         $elapsed = ($end - $start) * 1000.0;
         if ($elapsed > 5) {
             $message = "[{$eventName} for {$proc->getName()}]";
             $this->logger->info(PieCrustBaker::formatTimed($start, $message));
         }
     }
 }
Exemplo n.º 2
0
 protected function bakeFile($path, $rootDir, $rootDirLength)
 {
     // Start timing this.
     $start = microtime(true);
     // Figure out the root-relative path.
     $relative = substr($path, $rootDirLength);
     // Figure out if a previously baked file has overridden this one.
     // This can happen for example when a theme's file (baked via a
     // special mount point) is overridden in the user's website (baked
     // via the first normal root directory).
     $isOverridden = false;
     foreach ($this->bakedFiles as $bakedFile) {
         if ($bakedFile['relative_input'] == $relative) {
             $isOverridden = true;
         }
     }
     if ($isOverridden) {
         $this->bakedFiles[$path] = array('relative_input' => $relative, 'was_baked' => false, 'was_overridden' => true);
         $this->logger->info(PieCrustBaker::formatTimed($start, $relative) . ' [not baked, overridden]');
         return;
     }
     // Get the processing tree for that file.
     $builder = new ProcessingTreeBuilder($rootDir, $this->tmpDir, $this->bakeDir, $this->getProcessors());
     $treeRoot = $builder->build($relative);
     // Add an entry in the baked files' metadata.
     $bakeDir = $this->bakeDir;
     $treeLeaves = $treeRoot->getLeaves();
     $this->bakedFiles[$path] = array('relative_input' => $relative, 'relative_outputs' => array_map(function ($n) {
         return $n->getPath();
     }, $treeLeaves), 'outputs' => array_map(function ($n) use($bakeDir) {
         return $bakeDir . $n->getPath();
     }, $treeLeaves), 'was_baked' => false, 'was_overridden' => false);
     // See if we should force bake the file.
     $forceBake = !$this->parameters['smart'];
     if (!$forceBake) {
         foreach ($this->parameters['force_patterns'] as $p) {
             if (preg_match($p, $relative)) {
                 $forceBake = true;
                 break;
             }
         }
     }
     if ($forceBake) {
         $treeRoot->setState(ProcessingTreeNode::STATE_DIRTY, true);
     }
     // Bake!
     $runner = new ProcessingTreeRunner($rootDir, $this->tmpDir, $this->bakeDir, $this->logger);
     if ($runner->bakeSubTree($treeRoot)) {
         $this->bakedFiles[$path]['was_baked'] = true;
         $this->logger->info(PieCrustBaker::formatTimed($start, $relative));
     }
 }