Explorar el Código

[FrameworkBundle] added --without-debug option to cache:clear as the debug flag value can be different from the one used for the command execution (think generating the prod cache but still with debug information when running the command)

Fabien Potencier hace 14 años
padre
commit
85778caba1
Se han modificado 1 ficheros con 13 adiciones y 10 borrados
  1. 13 10
      src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php

+ 13 - 10
src/Symfony/Bundle/FrameworkBundle/Command/CacheClearCommand.php

@@ -33,13 +33,16 @@ class CacheClearCommand extends Command
         $this
             ->setName('cache:clear')
             ->setDefinition(array(
-                new InputOption('no-warmup', '', InputOption::VALUE_NONE, 'Do not warm up the cache')
+                new InputOption('no-warmup', '', InputOption::VALUE_NONE, 'Do not warm up the cache'),
+                new InputOption('without-debug', '', InputOption::VALUE_NONE, 'If the cache is warmed up, whether to disable debugging or not'),
             ))
             ->setDescription('Clear the cache')
             ->setHelp(<<<EOF
-The <info>cache:clear</info> command clears the application cache for the current environment:
+The <info>cache:clear</info> command clears the application cache for a given environment
+and debug mode:
 
-<info>./app/console cache:clear</info>
+<info>./app/console cache:clear dev</info>
+<info>./app/console cache:clear prod --without-debug</info>
 EOF
             )
         ;
@@ -54,7 +57,7 @@ EOF
         $oldCacheDir  = $realCacheDir.'_old';
 
         if (!is_writable($realCacheDir)) {
-            throw new \RuntimeException(sprintf('Unable to write in "%s" directory', $this->realCacheDir));
+            throw new \RuntimeException(sprintf('Unable to write in the "%s" directory', $this->realCacheDir));
         }
 
         if ($input->getOption('no-warmup')) {
@@ -62,7 +65,7 @@ EOF
         } else {
             $warmupDir = $realCacheDir.'_new';
 
-            $this->warmup($warmupDir);
+            $this->warmup(!$input->getOption('without-debug'), $warmupDir);
 
             rename($realCacheDir, $oldCacheDir);
             rename($warmupDir, $realCacheDir);
@@ -71,18 +74,18 @@ EOF
         $this->container->get('filesystem')->remove($oldCacheDir);
     }
 
-    protected function warmup($warmupDir)
+    protected function warmup($debug, $warmupDir)
     {
         $this->container->get('filesystem')->remove($warmupDir);
 
-        $kernel = $this->getTempKernel($this->container->get('kernel'), $warmupDir);
+        $kernel = $this->getTempKernel($this->container->get('kernel'), $debug, $warmupDir);
         $kernel->boot();
 
         $warmer = $kernel->getContainer()->get('cache_warmer');
         $warmer->enableOptionalWarmers();
         $warmer->warmUp($warmupDir);
 
-        // rename container files
+        // fix container files and classes
         $finder = new Finder();
         foreach ($finder->files()->name(get_class($kernel->getContainer()).'*')->in($warmupDir) as $file) {
             $content = file_get_contents($file);
@@ -92,7 +95,7 @@ EOF
         }
     }
 
-    protected function getTempKernel(KernelInterface $parent, $warmupDir)
+    protected function getTempKernel(KernelInterface $parent, $debug, $warmupDir)
     {
         $parentClass = get_class($parent);
         $rand = uniqid();
@@ -124,6 +127,6 @@ EOF;
         require_once $file;
         @unlink($file);
 
-        return new $class($parent->getEnvironment(), $parent->isDebug());
+        return new $class($parent->getEnvironment(), $debug);
     }
 }