Exclude directories from file system search
Directories can also match the glob search pattern if their names end in ".php", which will cause a read error later since the ContentRetriever implementers are expecting files. As far as I know, the only way to fix this is to do an additional check to ensure the URI is not of a directory. This resolves #306.pull/401/head
parent
fe7e9d5800
commit
93b5f5d209
|
@ -39,7 +39,8 @@ class ClientFilesFinder implements FilesFinder
|
||||||
$uris = [];
|
$uris = [];
|
||||||
foreach ($textDocuments as $textDocument) {
|
foreach ($textDocuments as $textDocument) {
|
||||||
$path = Uri\parse($textDocument->uri)['path'];
|
$path = Uri\parse($textDocument->uri)['path'];
|
||||||
if (Glob::match($path, $glob)) {
|
// Also exclude any directories that also match the glob pattern
|
||||||
|
if (Glob::match($path, $glob) && !is_dir($path)) {
|
||||||
$uris[] = $textDocument->uri;
|
$uris[] = $textDocument->uri;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,11 @@ class FileSystemFilesFinder implements FilesFinder
|
||||||
return coroutine(function () use ($glob) {
|
return coroutine(function () use ($glob) {
|
||||||
$uris = [];
|
$uris = [];
|
||||||
foreach (new GlobIterator($glob) as $path) {
|
foreach (new GlobIterator($glob) as $path) {
|
||||||
|
// Exclude any directories that also match the glob pattern
|
||||||
|
if (!is_dir($path)) {
|
||||||
$uris[] = pathToUri($path);
|
$uris[] = pathToUri($path);
|
||||||
|
}
|
||||||
|
|
||||||
yield timeout();
|
yield timeout();
|
||||||
}
|
}
|
||||||
return $uris;
|
return $uris;
|
||||||
|
|
Loading…
Reference in New Issue