Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>tags/v21.0.0beta1
@@ -381,4 +381,14 @@ class TAR extends Archive { | |||
$types = [null, 'gz', 'bz']; | |||
$this->tar = new \Archive_Tar($this->path, $types[self::getTarType($this->path)]); | |||
} | |||
/** | |||
* Get error object from archive_tar. | |||
*/ | |||
public function getError(): ?\PEAR_Error { | |||
if ($this->tar instanceof \Archive_Tar && $this->tar->error_object instanceof \PEAR_Error) { | |||
return $this->tar->error_object; | |||
} | |||
return null; | |||
} | |||
} |
@@ -294,12 +294,14 @@ class Installer { | |||
if ($archive) { | |||
if (!$archive->extract($extractDir)) { | |||
throw new \Exception( | |||
sprintf( | |||
'Could not extract app %s', | |||
$appId | |||
) | |||
); | |||
$errorMessage = 'Could not extract app ' . $appId; | |||
$archiveError = $archive->getError(); | |||
if ($archiveError instanceof \PEAR_Error) { | |||
$errorMessage .= ': ' . $archiveError->getMessage(); | |||
} | |||
throw new \Exception($errorMessage); | |||
} | |||
$allFiles = scandir($extractDir); | |||
$folders = array_diff($allFiles, ['.', '..']); |