Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

Tar.php

Same filename in this branch
  1. 11.1.x vendor/pear/archive_tar/Archive/Tar.php
  2. 11.1.x core/lib/Drupal/Core/Archiver/Tar.php
  3. 11.1.x core/modules/system/src/Plugin/Archiver/Tar.php

Namespace

Composer\Util

File

vendor/composer/composer/src/Composer/Util/Tar.php

View source
<?php

declare (strict_types=1);

/*
 * 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\Util;


/**
 * @author Wissem Riahi <wissemr@gmail.com>
 */
class Tar {
    public static function getComposerJson(string $pathToArchive) : ?string {
        $phar = new \PharData($pathToArchive);
        if (!$phar->valid()) {
            return null;
        }
        return self::extractComposerJsonFromFolder($phar);
    }
    
    /**
     * @throws \RuntimeException
     */
    private static function extractComposerJsonFromFolder(\PharData $phar) : string {
        if (isset($phar['composer.json'])) {
            return $phar['composer.json']->getContent();
        }
        $topLevelPaths = [];
        foreach ($phar as $folderFile) {
            $name = $folderFile->getBasename();
            if ($folderFile->isDir()) {
                $topLevelPaths[$name] = true;
                if (\count($topLevelPaths) > 1) {
                    throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: ' . implode(',', array_keys($topLevelPaths)));
                }
            }
        }
        $composerJsonPath = key($topLevelPaths) . '/composer.json';
        if ($topLevelPaths && isset($phar[$composerJsonPath])) {
            return $phar[$composerJsonPath]->getContent();
        }
        throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory');
    }

}

Classes

Title Deprecated Summary
Tar @author Wissem Riahi <wissemr@gmail.com>
RSS feed
Powered by Drupal