
| Current Path : /var/www/html/rocksensor/vendor/consolidation/robo/src/Task/Filesystem/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/rocksensor/vendor/consolidation/robo/src/Task/Filesystem/CleanDir.php |
<?php
namespace Robo\Task\Filesystem;
use Robo\Common\ResourceExistenceChecker;
use Robo\Result;
/**
* Deletes all files from specified dir, ignoring git files.
*
* ``` php
* <?php
* $this->taskCleanDir(['tmp','logs'])->run();
* // as shortcut
* $this->_cleanDir('app/cache');
* ?>
* ```
*/
class CleanDir extends BaseDir
{
use ResourceExistenceChecker;
/**
* {@inheritdoc}
*/
public function run()
{
if (!$this->checkResources($this->dirs, 'dir')) {
return Result::error($this, 'Source directories are missing!');
}
foreach ($this->dirs as $dir) {
$this->emptyDir($dir);
$this->printTaskInfo("Cleaned {dir}", ['dir' => $dir]);
}
return Result::success($this);
}
/**
* @param string $path
*/
protected function emptyDir($path)
{
$iterator = new \RecursiveIteratorIterator(
new \RecursiveDirectoryIterator($path),
\RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($iterator as $path) {
if ($path->isDir()) {
$dir = (string)$path;
if (basename($dir) === '.' || basename($dir) === '..') {
continue;
}
$this->fs->remove($dir);
} else {
$file = (string)$path;
if (basename($file) === '.gitignore' || basename($file) === '.gitkeep') {
continue;
}
$this->fs->remove($file);
}
}
}
}