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

TransferMediaAssets::handle()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 21
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 3
eloc 11
nc 4
nop 0
dl 0
loc 21
rs 9.9
c 2
b 0
f 0
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