|
5 | 5 | use Fidum\LaravelTranslationLinter\Contracts\Collections\UnusedFieldCollection; |
6 | 6 | use Fidum\LaravelTranslationLinter\Contracts\Collections\UnusedFilterCollection; |
7 | 7 | use Fidum\LaravelTranslationLinter\Contracts\Linters\UnusedTranslationLinter; |
| 8 | +use Fidum\LaravelTranslationLinter\Filters\IgnoreKeysFromUnusedBaselineFileFilter; |
| 9 | +use Fidum\LaravelTranslationLinter\Writers\UnusedBaselineFileWriter; |
8 | 10 | use Illuminate\Console\Command; |
9 | 11 |
|
10 | 12 | class UnusedCommand extends Command |
11 | 13 | { |
12 | | - public $signature = 'translation:unused'; |
| 14 | + public $signature = 'translation:unused |
| 15 | + {--b|generate-baseline : Generate a baseline file from the unused keys.}'; |
13 | 16 |
|
14 | 17 | public $description = 'Finds unused language keys.'; |
15 | 18 |
|
16 | 19 | public function handle( |
| 20 | + UnusedBaselineFileWriter $writer, |
17 | 21 | UnusedFieldCollection $fields, |
18 | 22 | UnusedFilterCollection $filters, |
19 | 23 | UnusedTranslationLinter $linter, |
20 | 24 | ): int { |
21 | | - $results = $linter->execute()->whereShouldReport($filters); |
| 25 | + $baseline = (bool) $this->option('generate-baseline'); |
| 26 | + $results = $linter->execute(); |
| 27 | + |
| 28 | + if ($baseline) { |
| 29 | + $results = $results->whereShouldReport($filters); |
| 30 | + |
| 31 | + $writer->execute($results); |
| 32 | + |
| 33 | + $this->components->info("Baseline file written with {$results->count()} unused translation keys."); |
| 34 | + |
| 35 | + return self::SUCCESS; |
| 36 | + } |
| 37 | + |
| 38 | + $filters->push(IgnoreKeysFromUnusedBaselineFileFilter::class); |
| 39 | + |
| 40 | + $results = $results->whereShouldReport($filters); |
22 | 41 |
|
23 | 42 | if ($results->isEmpty()) { |
24 | 43 | $this->components->info('No unused translations found!'); |
|
0 commit comments