Fix archiving paths on windows
parent
046c2d64a5
commit
5cb3564672
|
@ -13,6 +13,7 @@
|
||||||
namespace Composer\Package\Archiver;
|
namespace Composer\Package\Archiver;
|
||||||
|
|
||||||
use ZipArchive;
|
use ZipArchive;
|
||||||
|
use Composer\Util\Filesystem;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jan Prieser <jan@prieser.net>
|
* @author Jan Prieser <jan@prieser.net>
|
||||||
|
@ -28,15 +29,17 @@ class ZipArchiver implements ArchiverInterface
|
||||||
*/
|
*/
|
||||||
public function archive($sources, $target, $format, array $excludes = array())
|
public function archive($sources, $target, $format, array $excludes = array())
|
||||||
{
|
{
|
||||||
$sources = realpath($sources);
|
$fs = new Filesystem();
|
||||||
|
$sources = $fs->normalizePath($sources);
|
||||||
|
|
||||||
$zip = new ZipArchive();
|
$zip = new ZipArchive();
|
||||||
$res = $zip->open($target, ZipArchive::CREATE);
|
$res = $zip->open($target, ZipArchive::CREATE);
|
||||||
if ($res === true) {
|
if ($res === true) {
|
||||||
$files = new ArchivableFilesFinder($sources, $excludes);
|
$files = new ArchivableFilesFinder($sources, $excludes);
|
||||||
foreach ($files as $file) {
|
foreach ($files as $file) {
|
||||||
/** @var $file \SplFileInfo */
|
/** @var $file \SplFileInfo */
|
||||||
$filepath = $file->getPath()."/".$file->getFilename();
|
$filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/');
|
||||||
$localname = str_replace($sources."/", '', $filepath);
|
$localname = str_replace($sources.'/', '', $filepath);
|
||||||
if ($file->isDir()) {
|
if ($file->isDir()) {
|
||||||
$zip->addEmptyDir($localname);
|
$zip->addEmptyDir($localname);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue