Passed
Push — master ( ad6b2a...b41ca0 )
by Caen
07:45 queued 14s
created

TransferMediaAssets   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 31
rs 10
c 2
b 0
f 0
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handle() 0 21 3
A printFinishMessage() 0 2 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Hyde\Framework\Actions\PreBuildTasks;
6
7
use Hyde\Facades\Config;
8
use Hyde\Facades\Filesystem;
9
use Hyde\Support\Filesystem\MediaFile;
10
use Hyde\Framework\Features\BuildTasks\PreBuildTask;
11
use Hyde\Framework\Concerns\InteractsWithDirectories;
12
13
class TransferMediaAssets extends PreBuildTask
14
{
15
    protected static string $message = 'Transferring Media Assets';
16
17
    use InteractsWithDirectories;
18
19
    public function handle(): void
20
    {
21
        $this->newLine();
22
23
        $files = MediaFile::all();
24
25
        if (Config::getBool('hyde.load_app_styles_from_cdn', false)) {
26
            $files->forget('app.css');
27
        }
28
29
        if ($files->isEmpty()) {
30
            $this->skip("No media files to transfer.\n");
31
        }
32
33
        $this->withProgressBar($files, function (MediaFile $file): void {
34
            $sitePath = $file->getOutputPath();
35
            $this->needsParentDirectory($sitePath);
36
            Filesystem::putContents($sitePath, $file->getContents());
37
        });
38
39
        $this->newLine();
40
    }
41
42
    public function printFinishMessage(): void
43
    {
44
        // We don't need a finish message for this task.
45
    }
46
}
47