File tree Expand file tree Collapse file tree 5 files changed +53
-8
lines changed
Expand file tree Collapse file tree 5 files changed +53
-8
lines changed Original file line number Diff line number Diff line change @@ -37,6 +37,7 @@ public function __construct(
3737 private FileWriter $ fileWriter ,
3838 private FileDiffFactory $ fileDiffFactory ,
3939 private RuleSkipper $ ruleSkipper ,
40+ private ProcessorSkipper $ processorSkipper ,
4041 private ChangedFilesDetector $ changedFilesDetector ,
4142 private ConfigurationRuleFilter $ configurationRuleFilter
4243 ) {
@@ -70,6 +71,10 @@ public function run(Configuration $configuration): ProcessResult
7071 $ this ->symfonyStyle ->progressAdvance ();
7172 }
7273 foreach ($ this ->processors as $ processor ) {
74+ if ($ this ->processorSkipper ->shouldSkip ($ processor ::class)) {
75+ continue ;
76+ }
77+
7378 if (! $ processor ->canHandle ($ file )) {
7479 continue ;
7580 }
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ declare (strict_types=1 );
4+
5+ namespace a9f \Fractor \Application ;
6+
7+ use a9f \Fractor \Application \Contract \FileProcessor ;
8+ use a9f \Fractor \Application \Contract \FractorRule ;
9+ use a9f \Fractor \Configuration \ValueObject \SkipConfiguration ;
10+
11+ final readonly class ProcessorSkipper
12+ {
13+ public function __construct (
14+ private SkipConfiguration $ configuration
15+ ) {
16+ }
17+
18+ /**
19+ * @param class-string<FileProcessor<FractorRule>> $processor
20+ */
21+ public function shouldSkip (string $ processor ): bool
22+ {
23+ $ configuredSkip = $ this ->configuration ->getSkip ();
24+
25+ // Check if the processor class is directly in the skip array
26+ return in_array ($ processor , $ configuredSkip , true );
27+ }
28+ }
Original file line number Diff line number Diff line change 66
77use a9f \Fractor \Application \Contract \FileProcessor ;
88use a9f \Fractor \Application \Contract \FractorRule ;
9+ use a9f \Fractor \Application \ProcessorSkipper ;
910use Webmozart \Assert \Assert ;
1011
1112final readonly class AllowedFileExtensionsResolver
1415 * @param iterable<FileProcessor<FractorRule>> $processors
1516 */
1617 public function __construct (
17- private iterable $ processors
18+ private iterable $ processors ,
19+ private ProcessorSkipper $ processorSkipper
1820 ) {
1921 Assert::allIsInstanceOf ($ this ->processors , FileProcessor::class);
2022 }
@@ -26,6 +28,10 @@ public function resolve(): array
2628 {
2729 $ fileExtensions = [];
2830 foreach ($ this ->processors as $ processor ) {
31+ if ($ this ->processorSkipper ->shouldSkip ($ processor ::class)) {
32+ continue ;
33+ }
34+
2935 $ fileExtensions = array_merge ($ processor ->allowedFileExtensions (), $ fileExtensions );
3036 }
3137
Original file line number Diff line number Diff line change 2323 * An instance of the builder can be obtained via {@see FractorConfiguration::configure()} or from an instance
2424 * of {@see ContainerBuilder} passed to the callable returned by fractor.php.
2525 *
26- * @phpstan-import-type TSkipForRules from SkipConfiguration
27- * @phpstan-import-type TGlobalSkip from SkipConfiguration
26+ * @phpstan-import-type TSkipConfiguration from SkipConfiguration
2827 */
2928final class FractorConfigurationBuilder
3029{
@@ -39,7 +38,7 @@ final class FractorConfigurationBuilder
3938 private array $ paths = [];
4039
4140 /**
42- * @var TSkipForRules|TGlobalSkip
41+ * @var TSkipConfiguration
4342 */
4443 private array $ skip = [];
4544
@@ -163,7 +162,7 @@ public function withPaths(array $paths): self
163162 }
164163
165164 /**
166- * @param TSkipForRules|TGlobalSkip $skip
165+ * @param TSkipConfiguration $skip
167166 */
168167 public function withSkip (array $ skip ): self
169168 {
Original file line number Diff line number Diff line change 44
55namespace a9f \Fractor \Configuration \ValueObject ;
66
7+ use a9f \Fractor \Application \Contract \FileProcessor ;
78use a9f \Fractor \Application \Contract \FractorRule ;
89
910/**
10- * The configuration which paths to skip, optionally narrowed to single rules.
11+ * The configuration which paths to skip, optionally narrowed to single rules or processors .
1112 *
1213 * @phpstan-type TSkipForRules array<class-string<FractorRule>, string|list<string>>
14+ * @phpstan-type TSkipForProcessors array<class-string<FileProcessor<FractorRule>>, string|list<string>>
1315 * @phpstan-type TGlobalSkip array<int, string>
16+ * @phpstan-type TProcessorSkip array<int, class-string<FileProcessor<FractorRule>>>
17+ * @phpstan-type TSkipConfiguration TSkipForRules|TSkipForProcessors|TGlobalSkip|TProcessorSkip
1418 */
1519final readonly class SkipConfiguration
1620{
1721 /**
18- * @param TSkipForRules|TGlobalSkip $skip
22+ * @param TSkipConfiguration $skip
1923 */
2024 public function __construct (
25+ /**
26+ * @phpstan-var TSkipConfiguration
27+ */
2128 private array $ skip
2229 ) {
2330 }
2431
2532 /**
26- * @return TSkipForRules|TGlobalSkip
33+ * @return TSkipConfiguration
2734 */
2835 public function getSkip (): array
2936 {
You can’t perform that action at this time.
0 commit comments