Sha256: e6c5dfa1984361b065a23ed4232a05f6841865ee18bcb57fb0a5d57d89cb265c

Contents?: true

Size: 1.96 KB

Versions: 41

Compression:

Stored size: 1.96 KB

Contents

<?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Package\Archiver;

use ZipArchive;
use Composer\Util\Filesystem;

/**
 * @author Jan Prieser <jan@prieser.net>
 */
class ZipArchiver implements ArchiverInterface
{
    protected static $formats = array(
        'zip' => 1,
    );

    /**
     * {@inheritdoc}
     */
    public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false)
    {
        $fs = new Filesystem();
        $sources = $fs->normalizePath($sources);

        $zip = new ZipArchive();
        $res = $zip->open($target, ZipArchive::CREATE);
        if ($res === true) {
            $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters);
            foreach ($files as $file) {
                /** @var \SplFileInfo $file */
                $filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/');
                $localname = str_replace($sources.'/', '', $filepath);
                if ($file->isDir()) {
                    $zip->addEmptyDir($localname);
                } else {
                    $zip->addFile($filepath, $localname);
                }
            }
            if ($zip->close()) {
                return $target;
            }
        }
        $message = sprintf(
            "Could not create archive '%s' from '%s': %s",
            $target,
            $sources,
            $zip->getStatusString()
        );
        throw new \RuntimeException($message);
    }

    /**
     * {@inheritdoc}
     */
    public function supports($format, $sourceType)
    {
        return isset(static::$formats[$format]) && $this->compressionAvailable();
    }

    private function compressionAvailable()
    {
        return class_exists('ZipArchive');
    }
}

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
dependabot-composer-0.113.19 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.112.1 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.57 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.56 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.52 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.50 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.25 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.17 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.111.15 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.110.13 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.108.11 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.108.8 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.107.47 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.107.39 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.107.36 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.107.28 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.107.14 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.106.12 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.106.11 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php
dependabot-composer-0.106.5 helpers/vendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.php