1
0
Fork 0

Skip directories in zip generation, empty dirs won't get archived

This seems ok as we currently rely on git generating archives which does
not archive empty directories either.
pull/1567/head
Nils Adermann 2013-03-26 13:02:32 +01:00
parent deae50392f
commit 6066359944
3 changed files with 19 additions and 8 deletions

View File

@ -25,7 +25,7 @@ use Symfony\Component\Finder;
*
* @author Nils Adermann <naderman@naderman.de>
*/
class ArchivableFilesFinder
class ArchivableFilesFinder extends \IteratorIterator
{
/**
* @var Symfony\Component\Finder\Finder
@ -66,13 +66,24 @@ class ArchivableFilesFinder
})
->ignoreVCS(true)
->ignoreDotFiles(false);
parent::__construct($this->finder->getIterator());
}
/**
* @return Symfony\Component\Finder\Finder
*/
public function getIterator()
public function next()
{
return $this->finder->getIterator();
do {
$this->getInnerIterator()->next();
} while ($this->getInnerIterator()->valid() && $this->getInnerIterator()->current()->isDir());
}
public function current()
{
return $this->getInnerIterator()->current();
}
public function valid()
{
return $this->getInnerIterator()->valid();
}
}

View File

@ -37,7 +37,7 @@ class PharArchiver implements ArchiverInterface
try {
$phar = new \PharData($target, null, null, static::$formats[$format]);
$files = new ArchivableFilesFinder($sources, $excludes);
$phar->buildFromIterator($files->getIterator(), $sources);
$phar->buildFromIterator($files, $sources);
return $target;
} catch (\UnexpectedValueException $e) {
$message = sprintf("Could not create archive '%s' from '%s': %s",

View File

@ -169,7 +169,7 @@ class ArchivableFilesFinderTest extends \PHPUnit_Framework_TestCase
protected function getArchivableFiles()
{
$files = array();
foreach ($this->finder->getIterator() as $file) {
foreach ($this->finder as $file) {
if (!$file->isDir()) {
$files[] = preg_replace('#^'.preg_quote($this->sources, '#').'#', '', $file->getRealPath());
}