Support compress tar.gz and tar.bz2 archiver
parent
9896abeb38
commit
c4a9b9b7d9
|
@ -20,8 +20,15 @@ namespace Composer\Package\Archiver;
|
||||||
class PharArchiver implements ArchiverInterface
|
class PharArchiver implements ArchiverInterface
|
||||||
{
|
{
|
||||||
protected static $formats = array(
|
protected static $formats = array(
|
||||||
'zip' => \Phar::ZIP,
|
'zip' => \Phar::ZIP,
|
||||||
'tar' => \Phar::TAR,
|
'tar' => \Phar::TAR,
|
||||||
|
'tar.gz' => \Phar::TAR,
|
||||||
|
'tar.bz2' => \Phar::TAR
|
||||||
|
);
|
||||||
|
|
||||||
|
protected static $compressFormats = array(
|
||||||
|
'tar.gz' => \Phar::GZ,
|
||||||
|
'tar.bz2' => \Phar::BZ2
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,10 +44,34 @@ class PharArchiver implements ArchiverInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
$filename = substr($target, 0, strrpos($target, $format) - 1);
|
||||||
|
|
||||||
|
// Check if compress format
|
||||||
|
if (isset(static::$compressFormats[$format])) {
|
||||||
|
// Current compress format supported base on tar
|
||||||
|
$target = $filename . '.tar';
|
||||||
|
}
|
||||||
|
|
||||||
$phar = new \PharData($target, null, null, static::$formats[$format]);
|
$phar = new \PharData($target, null, null, static::$formats[$format]);
|
||||||
$files = new ArchivableFilesFinder($sources, $excludes);
|
$files = new ArchivableFilesFinder($sources, $excludes);
|
||||||
$phar->buildFromIterator($files, $sources);
|
$phar->buildFromIterator($files, $sources);
|
||||||
|
|
||||||
|
if (isset(static::$compressFormats[$format])) {
|
||||||
|
// Check can be compressed?
|
||||||
|
if (!$phar->canCompress(static::$compressFormats[$format])) {
|
||||||
|
throw new \RuntimeException(sprintf('Can not compress to %s format', $format));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete old tar
|
||||||
|
unlink($target);
|
||||||
|
|
||||||
|
// Compress the new tar
|
||||||
|
$phar->compress(static::$compressFormats[$format]);
|
||||||
|
|
||||||
|
// Make the correct filename
|
||||||
|
$target = $filename . '.' . $format;
|
||||||
|
}
|
||||||
|
|
||||||
return $target;
|
return $target;
|
||||||
} catch (\UnexpectedValueException $e) {
|
} catch (\UnexpectedValueException $e) {
|
||||||
$message = sprintf("Could not create archive '%s' from '%s': %s",
|
$message = sprintf("Could not create archive '%s' from '%s': %s",
|
||||||
|
|
Loading…
Reference in New Issue