From 0140ba9bb020687995ce0ed499e4b255cb4ed0ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20Vo=C5=99=C3=AD=C5=A1ek?= Date: Mon, 5 Apr 2021 15:59:41 +0200 Subject: [PATCH] fix unable to rewind --- src/Finder.php | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Finder.php b/src/Finder.php index 799c6de4b79..90d4dca7d5c 100644 --- a/src/Finder.php +++ b/src/Finder.php @@ -30,16 +30,25 @@ public function __construct() ->name('*.php') ->exclude('vendor') ; + } + public function getIterator() + { // add config files even if dot files are ignored - if (class_exists(LazyIterator::class)) { // LazyIterator class is available since Symfony 4.4 (which requires PHP 7+) - $this->append(new \IteratorIterator(new LazyIterator(function () { - $iterator = clone $this; - $iterator->ignoreDotFiles(false); - $iterator->name('~^\.php_cs(?:\..+)?$~is'); - - return $iterator; - }))); + $configFilenameRegex = '\.php_cs(?:\..+)?'; + $this->name('~^' . $configFilenameRegex . '$~is'); + + $fx = \Closure::bind(function () { // rebound function can be called without assigment as of PHP 7 + return $this->ignore & static::IGNORE_DOT_FILES; + }, $this, parent::class); + $isDotFilesIgnored = $fx(); + if ($isDotFilesIgnored) { + $this + ->ignoreDotFiles(false) + ->notPath('~(?:^|/)(?!' . $configFilenameRegex . '(?:/|$))\..*(?:/|$)~') + ; } + + return parent::getIterator(); } }