2 namespace Robo\Task\Filesystem;
4 use Robo\Common\ResourceExistenceChecker;
8 * Deletes all files from specified dir, ignoring git files.
12 * $this->taskCleanDir(['tmp','logs'])->run();
14 * $this->_cleanDir('app/cache');
18 class CleanDir extends BaseDir
20 use ResourceExistenceChecker;
27 if (!$this->checkResources($this->dirs, 'dir')) {
28 return Result::error($this, 'Source directories are missing!');
30 foreach ($this->dirs as $dir) {
31 $this->emptyDir($dir);
32 $this->printTaskInfo("Cleaned {dir}", ['dir' => $dir]);
34 return Result::success($this);
40 protected function emptyDir($path)
42 $iterator = new \RecursiveIteratorIterator(
43 new \RecursiveDirectoryIterator($path),
44 \RecursiveIteratorIterator::CHILD_FIRST
47 foreach ($iterator as $path) {
50 if (basename($dir) === '.' || basename($dir) === '..') {
53 $this->fs->remove($dir);
55 $file = (string)$path;
56 if (basename($file) === '.gitignore' || basename($file) === '.gitkeep') {
59 $this->fs->remove($file);