Issue #3304433 by lauriii, xjm, quietone, tim.plunkett, Wim Leers, mherchel, andy-blum: generate-theme scripts fails in a ddev environment

(cherry picked from commit 3d46d27b30)
merge-requests/2662/head
xjm 2022-08-20 14:31:58 -05:00
parent cc2cafca3b
commit e8a2a6a96f
No known key found for this signature in database
GPG Key ID: 206B0B8743BDF4C2
1 changed files with 22 additions and 3 deletions

View File

@ -252,9 +252,15 @@ class GenerateTheme extends Command {
}
}
if (!rename($tmp_dir, $destination)) {
$io->getErrorStyle()->error("The theme could not be moved to the destination: $destination.");
return 1;
if (!@rename($tmp_dir, $destination)) {
// If rename fails, copy the files to the destination directory. This is
// expected to happen when the tmp directory is on a different file
// system.
$this->copyRecursive($tmp_dir, $destination);
// Renaming would not have left anything behind. Ensure that is still the
// case.
$this->rmRecursive($tmp_dir);
}
$output->writeln(sprintf('Theme generated successfully to %s', $destination));
@ -262,6 +268,19 @@ class GenerateTheme extends Command {
return 0;
}
/**
* Removes a directory recursively.
*
* @param string $dir
* A directory to be removed.
*/
private function rmRecursive(string $dir): void {
$files = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($dir, \RecursiveDirectoryIterator::SKIP_DOTS), \RecursiveIteratorIterator::CHILD_FIRST);
foreach ($files as $file) {
is_dir($file) ? rmdir($file) : unlink($file);
}
}
/**
* Copies files recursively.
*