diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/AssetsInstallCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/AssetsInstallCommand.php
index 0a3ea2871deb3..27cccd869e9a0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/AssetsInstallCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/AssetsInstallCommand.php
@@ -92,7 +92,9 @@ protected function execute(InputInterface $input, OutputInterface $output)
$validAssetDirs = array();
foreach ($this->getContainer()->get('kernel')->getBundles() as $bundle) {
if (is_dir($originDir = $bundle->getPath().'/Resources/public')) {
- $targetDir = $bundlesDir.preg_replace('/bundle$/', '', strtolower($bundle->getName()));
+ $assetDir = preg_replace('/bundle$/', '', strtolower($bundle->getName()));
+ $targetDir = $bundlesDir.$assetDir;
+ $validAssetDirs[] = $assetDir;
$output->writeln(sprintf('Installing assets for %s into %s', $bundle->getNamespace(), $targetDir));
@@ -132,15 +134,12 @@ protected function execute(InputInterface $input, OutputInterface $output)
} else {
$this->hardCopy($originDir, $targetDir);
}
- $validAssetDirs[] = $targetDir;
}
}
+
// remove the assets of the bundles that no longer exist
- foreach (new \FilesystemIterator($bundlesDir) as $dir) {
- if (!in_array($dir, $validAssetDirs)) {
- $filesystem->remove($dir);
- }
- }
+ $dirsToRemove = Finder::create()->depth(0)->directories()->exclude($validAssetDirs)->in($bundlesDir);
+ $filesystem->remove($dirsToRemove);
}
/**