Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
11 / 11 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
1 / 1 |
ViewDiffService | |
100.00% |
11 / 11 |
|
100.00% |
3 / 3 |
5 | |
100.00% |
1 / 1 |
getViewFileHashIndex | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
2 | |||
getChecksums | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
2 | |||
checksumMatchesAny | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | declare(strict_types=1); |
4 | |
5 | namespace Hyde\Framework\Services; |
6 | |
7 | use Hyde\Hyde; |
8 | |
9 | use function Hyde\unixsum_file; |
10 | use function str_replace; |
11 | use function in_array; |
12 | use function Hyde\unslash; |
13 | use function glob; |
14 | |
15 | /** |
16 | * @internal This class may be refactored to better suit its intended purpose. |
17 | * |
18 | * Helper methods to interact with the virtual filecache that is used to compare |
19 | * published Blade views with the original Blade views in the Hyde Framework |
20 | * so the user can be warned before overwriting their customizations. |
21 | * |
22 | * Since we currently never use this class more than one in the request cycle, |
23 | * there is no reason to cache the results of the file index in the instance. |
24 | */ |
25 | class ViewDiffService |
26 | { |
27 | /** @return array<string, array{unixsum: string}> */ |
28 | public static function getViewFileHashIndex(): array |
29 | { |
30 | $filecache = []; |
31 | |
32 | foreach (glob(Hyde::vendorPath('resources/views/**/*.blade.php')) as $file) { |
33 | $filecache[unslash(str_replace(Hyde::vendorPath(), '', (string) $file))] = [ |
34 | 'unixsum' => unixsum_file($file), |
35 | ]; |
36 | } |
37 | |
38 | return $filecache; |
39 | } |
40 | |
41 | /** @return array<string> */ |
42 | public static function getChecksums(): array |
43 | { |
44 | $checksums = []; |
45 | |
46 | foreach (static::getViewFileHashIndex() as $file) { |
47 | $checksums[] = $file['unixsum']; |
48 | } |
49 | |
50 | return $checksums; |
51 | } |
52 | |
53 | public static function checksumMatchesAny(string $checksum): bool |
54 | { |
55 | return in_array($checksum, static::getChecksums()); |
56 | } |
57 | } |