Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
BuildActionRunner
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
1 / 1
 canRunBuildAction
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
2
 runBuildAction
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3namespace Hyde\Framework\Concerns\Internal;
4
5use Hyde\Framework\Services\CollectionService;
6use Hyde\Framework\Services\DiscoveryService;
7use Hyde\Framework\StaticPageBuilder;
8
9/**
10 * Offloads build action logic for static site building commands.
11 *
12 * @see \Hyde\Framework\Commands\HydeBuildStaticSiteCommand
13 *
14 * @internal
15 */
16trait BuildActionRunner
17{
18    /** @internal */
19    protected function canRunBuildAction(array $collection, string $name, ?string $verb = null): bool
20    {
21        if (sizeof($collection) < 1) {
22            $this->line('No '.$name.' found. Skipping...');
23            $this->newLine();
24
25            return false;
26        }
27
28        $this->comment(($verb ?? 'Creating')." $name...");
29
30        return true;
31    }
32
33    /** @internal */
34    protected function runBuildAction(string $model): void
35    {
36        $collection = CollectionService::getSourceFileListForModel($model);
37        $modelName = $this->getModelPluralName($model);
38        if ($this->canRunBuildAction($collection, $modelName)) {
39            $this->withProgressBar(
40                $collection,
41                function ($basename) use ($model) {
42                    new StaticPageBuilder(
43                        DiscoveryService::getParserInstanceForModel(
44                            $model,
45                            $basename
46                        )->get(),
47                        true
48                    );
49                }
50            );
51            $this->newLine(2);
52        }
53    }
54}