From 3da8246eac590ee82f1095f922ba42cc5e7d516d Mon Sep 17 00:00:00 2001 From: Ben Thomson Date: Fri, 29 Dec 2023 15:13:42 +0800 Subject: [PATCH] Improve "rimraf" replacement and use for all cleanup This should no longer crash out if the file/folder does not exist, exactly like how the "rm -rf" command functions. --- public/install/api/src/Api.php | 35 +++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/public/install/api/src/Api.php b/public/install/api/src/Api.php index 2fe9401..3b81903 100644 --- a/public/install/api/src/Api.php +++ b/public/install/api/src/Api.php @@ -673,10 +673,10 @@ public function postCleanUp() // Remove install files $this->log->notice('Removing installation files'); - @unlink($this->workDir('winter.zip')); - @unlink($this->rootDir('install.html')); - @unlink($this->rootDir('install.zip')); - @unlink($this->rootDir('.ignore-ssl')); + $this->rimraf($this->workDir('winter.zip')); + $this->rimraf($this->rootDir('install.html')); + $this->rimraf($this->rootDir('install.zip')); + $this->rimraf($this->rootDir('.ignore-ssl')); // Remove install folders $this->log->notice('Removing temporary installation folders'); @@ -687,13 +687,13 @@ public function postCleanUp() $this->log->notice('Removing core development files'); $this->rimraf($this->workDir('.github')); $this->rimraf($this->workDir('.gitpod')); - @unlink($this->workDir('.gitattributes')); - @unlink($this->workDir('.gitpod.yml')); - @unlink($this->workDir('.jshintrc')); - @unlink($this->workDir('.babelrc')); - @unlink($this->workDir('CHANGELOG.md')); - @unlink($this->workDir('phpunit.xml')); - @unlink($this->workDir('phpcs.xml')); + $this->rimraf($this->workDir('.gitattributes')); + $this->rimraf($this->workDir('.gitpod.yml')); + $this->rimraf($this->workDir('.jshintrc')); + $this->rimraf($this->workDir('.babelrc')); + $this->rimraf($this->workDir('CHANGELOG.md')); + $this->rimraf($this->workDir('phpunit.xml')); + $this->rimraf($this->workDir('phpcs.xml')); // Move files from subdirectory into install folder $this->log->notice('Moving files from temporary work directory to final installation path', [ @@ -1117,13 +1117,22 @@ protected function generateKey(): string /** * PHP-based "rm -rf" command. - * + * * Recursively removes a directory and all files and subdirectories within. - * + * * @return void */ protected function rimraf(string $path) { + if (!file_exists($path)) { + return; + } + + if (is_file($path)) { + @unlink($path); + return; + } + $dir = new DirectoryIterator($path); foreach ($dir as $item) {