trigger mirror
[pharext/pharext] / src / pharext / Task / Cleanup.php
index 1263bd966e33f0399dac123c2d9e6a401996ed15..14048a52b60c6559863a5f6adc90181a431684a0 100644 (file)
@@ -26,21 +26,27 @@ class Cleanup implements Task
         * @param bool $verbose
         */
        public function run($verbose = false) {
-               if (is_dir($this->rm)) {
+               if ($verbose) {
+                       printf("Cleaning up %s ...\n", $this->rm);
+               }
+               if ($this->rm instanceof Tempfile) {
+                       unset($this->rm);
+               } elseif (is_dir($this->rm)) {
                        $rdi = new RecursiveDirectoryIterator($this->rm,
-                               FilesystemIterator::CURRENT_AS_PATHNAME |
+                               FilesystemIterator::CURRENT_AS_SELF | // needed for 5.5
+                               FilesystemIterator::KEY_AS_PATHNAME |
                                FilesystemIterator::SKIP_DOTS);
                        $rii = new RecursiveIteratorIterator($rdi,
                                RecursiveIteratorIterator::CHILD_FIRST);
-                       foreach ($rii as $path) {
-                               if ($rii->isDir()) {
-                                       rmdir($path);
+                       foreach ($rii as $path => $child) {
+                               if ($child->isDir()) {
+                                       @rmdir($path);
                                } else {
-                                       unlink($path);
+                                       @unlink($path);
                                }
                        }
-                       rmdir($this->rm);
-               } else {
+                       @rmdir($this->rm);
+               } elseif (file_exists($this->rm)) {
                        @unlink($this->rm);
                }
        }