Skip to content

Commit 041a03c

Browse files
[bin] improved use of DirectoryIterator
1 parent 76061d5 commit 041a03c

File tree

3 files changed

+36
-18
lines changed

3 files changed

+36
-18
lines changed

bin/check-php-syntax

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,31 @@
99
*/
1010

1111
$global_exit_code = 0;
12-
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".", RecursiveDirectoryIterator::SKIP_DOTS));
1312

14-
foreach ($iterator as $file) {
15-
if (
16-
strpos($file->getPathname(), './vendor/') === 0
17-
|| strpos($file->getPathname(), './node_modules/') === 0
18-
|| false == $file->isFile()
19-
|| $file->getExtension() !== 'php'
20-
) {
21-
continue;
13+
$directory = new \RecursiveDirectoryIterator(".", \FilesystemIterator::FOLLOW_SYMLINKS);
14+
$filter = new \RecursiveCallbackFilterIterator($directory, function ($current, $key, $iterator) {
15+
// Skip hidden files and directories.
16+
if (str_starts_with($current->getFilename(), '.')) {
17+
return false;
18+
}
19+
20+
// Skip node_modules and vendor directory
21+
if ($current->isDir()) {
22+
return ! in_array($current->getFilename(), ['vendor', 'node_modules']);
2223
}
2324

25+
return $current->getExtension() == "php";
26+
});
27+
$iterator = new \RecursiveIteratorIterator($filter);
28+
29+
foreach ($iterator as $file) {
2430
$exit_code = 0;
2531
$output = [];
2632
exec("php --define error_reporting=-1 -l {$file->getPathname()}", $output, $exit_code);
2733
$output = join("\n", $output);
2834
echo $output . "\n";
2935

30-
if ($exit_code || strpos($output, 'Deprecated') !== false) {
36+
if ($exit_code || str_contains($output, 'Deprecated')) {
3137
$global_exit_code = 1;
3238
}
3339
}

bin/wp-i18n-export

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#!/usr/bin/env php
22
<?php
3+
34
use PhpParser\Error;
45
use PhpParser\NodeDumper;
56
use PhpParser\ParserFactory;
@@ -8,6 +9,7 @@ use PhpParser\NodeVisitorAbstract;
89
use PhpParser\Node;
910
use PhpParser\Node\Scalar\String_;
1011
use PhpParser\Node\Expr\FuncCall;
12+
use PhpParser\Node\Expr\Throw_;
1113

1214
// Depends on nikic/php-parser
1315

@@ -21,9 +23,23 @@ if (count($argv) <= 2) {
2123
$plugin = trim($argv[1]);
2224
$dir = trim($argv[2]);
2325

24-
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS | RecursiveIteratorIterator::LEAVES_ONLY));
25-
$results = [];
26+
$directory = new \RecursiveDirectoryIterator($dir, \FilesystemIterator::FOLLOW_SYMLINKS);
27+
$filter = new \RecursiveCallbackFilterIterator($directory, function ($current, $key, $iterator) {
28+
// Skip hidden files and directories.
29+
if (str_starts_with($current->getFilename(), '.')) {
30+
return false;
31+
}
32+
33+
// Skip node_modules and vendor directory
34+
if ($current->isDir()) {
35+
return ! in_array($current->getFilename(), ['vendor', 'node_modules']);
36+
}
2637

38+
return $current->getExtension() == "php";
39+
});
40+
$iterator = new \RecursiveIteratorIterator($filter);
41+
42+
$results = [];
2743
$currentFile = '';
2844
$parser = (new ParserFactory())->createForNewestSupportedVersion();
2945
$traverser = new NodeTraverser();
@@ -50,15 +66,11 @@ $traverser->addVisitor(new class extends NodeVisitorAbstract {
5066
});
5167

5268
foreach ($iterator as $file) {
53-
if (! $file->isFile() || str_starts_with($file->getPathname(), './vendor/') || str_starts_with($file->getPathname(), './node_modules/')|| $file->getExtension() !== 'php') {
54-
continue;
55-
}
56-
5769
$currentFile = $file->getPathname();
5870
$fileContents = file_get_contents($file->getPathname());
5971
try {
6072
$ast = $parser->parse($fileContents);
61-
} catch (Error $error) {
73+
} catch (Throwable $error) {
6274
echo "Parse error in file {$file->getPathname()}: {$error->getMessage()}\n";
6375
exit(1);
6476
}

src/Resources/external-strings.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?php
1+
<?php
22

33
// i18n strings for koko-analytics-pro
44

0 commit comments

Comments
 (0)