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

Breadcrumb

  1. Drupal Core 11.1.x
  2. ArchivableFilesFinder.php

function ArchivableFilesFinder::__construct

Initializes the internal Symfony Finder with appropriate filters

Parameters

string $sources Path to source files to be archived:

string[] $excludes Composer's own exclude rules from composer.json:

bool $ignoreFilters Ignore filters when looking for files:

File

vendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.php, line 46

Class

ArchivableFilesFinder
A Symfony Finder wrapper which locates files that should go into archives

Namespace

Composer\Package\Archiver

Code

public function __construct(string $sources, array $excludes, bool $ignoreFilters = false) {
    $fs = new Filesystem();
    $sourcesRealPath = realpath($sources);
    if ($sourcesRealPath === false) {
        throw new \RuntimeException('Could not realpath() the source directory "' . $sources . '"');
    }
    $sources = $fs->normalizePath($sourcesRealPath);
    if ($ignoreFilters) {
        $filters = [];
    }
    else {
        $filters = [
            new GitExcludeFilter($sources),
            new ComposerExcludeFilter($sources, $excludes),
        ];
    }
    $this->finder = new Finder();
    $filter = static function (\SplFileInfo $file) use ($sources, $filters, $fs) : bool {
        $realpath = $file->getRealPath();
        if ($realpath === false) {
            return false;
        }
        if ($file->isLink() && strpos($realpath, $sources) !== 0) {
            return false;
        }
        $relativePath = Preg::replace('#^' . preg_quote($sources, '#') . '#', '', $fs->normalizePath($realpath));
        $exclude = false;
        foreach ($filters as $filter) {
            $exclude = $filter->filter($relativePath, $exclude);
        }
        return !$exclude;
    };
    $this->finder
        ->in($sources)
        ->filter($filter)
        ->ignoreVCS(true)
        ->ignoreDotFiles(false)
        ->sortByName();
    parent::__construct($this->finder
        ->getIterator());
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal