Skip to content

Commit e576986

Browse files
committed
json: implement fix mode
1 parent 58fea3f commit e576986

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

json-check.php

+28-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,25 @@
11
<?php
22

33
declare(strict_types=1);
4-
$invalidFiles = jsonStyleCheck('.');
4+
5+
if ($argc == 1) {
6+
$mode = '';
7+
$dir = '.';
8+
} else if($argc == 2) {
9+
$mode = $argv[1];
10+
$dir = '.';
11+
} else if($argc == 3) {
12+
$mode = $argv[1];
13+
$dir = $argv[2];
14+
} else {
15+
die('JSON Checker cannot be run with this set of parameters!');
16+
}
17+
18+
if (!in_array($mode, ['', 'fix'])) {
19+
die('Unsupported mode "' . $mode . '"!');
20+
}
21+
22+
$invalidFiles = jsonStyleCheck($dir, $mode);
523

624
if (!empty($invalidFiles)) {
725
foreach ($invalidFiles as $invalidFile) {
@@ -10,17 +28,17 @@
1028
exit(1);
1129
}
1230

13-
function jsonStyleCheck(string $dir)
31+
function jsonStyleCheck(string $dir, string $mode)
1432
{
1533
$invalidFiles = [];
1634
$files = scandir($dir);
1735
foreach ($files as $file) {
1836
if ($file != '.' && $file != '..' && $dir != './libs/vendor') {
1937
if (is_dir($dir . '/' . $file)) {
20-
$invalidFiles = array_merge($invalidFiles, jsonStyleCheck($dir . '/' . $file));
38+
$invalidFiles = array_merge($invalidFiles, jsonStyleCheck($dir . '/' . $file, $mode));
2139
} else {
2240
if (fnmatch('*.json', $dir . '/' . $file)) {
23-
$invalidFile = checkContentInFile($dir . '/' . $file);
41+
$invalidFile = checkContentInFile($dir . '/' . $file, $mode);
2442
if ($invalidFile !== false) {
2543
$invalidFiles[] = $invalidFile;
2644
}
@@ -31,7 +49,7 @@ function jsonStyleCheck(string $dir)
3149
return $invalidFiles;
3250
}
3351

34-
function checkContentInFile(string $dir)
52+
function checkContentInFile(string $dir, string $mode)
3553
{
3654
$fileOriginal = file_get_contents($dir);
3755

@@ -48,5 +66,10 @@ function checkContentInFile(string $dir)
4866
if ($fileOriginal == $fileCompare) {
4967
return false;
5068
}
69+
70+
if ($mode == 'fix') {
71+
file_put_contents($dir, $fileCompare);
72+
}
73+
5174
return $dir;
5275
}

0 commit comments

Comments
 (0)