Passed
Push — master ( 25b802...040228 )
by Darko
10:52
created

ConsoleOutputService::echoReleaseDeleted()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 0
dl 0
loc 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
namespace App\Services\AdditionalProcessing;
3
use Blacklight\ColorCLI;
4
/**
5
 * Service for CLI output during additional processing.
6
 * Centralizes all echo/output functionality.
7
 */
8
class ConsoleOutputService
9
{
10
    private ColorCLI $colorCLI;
11
    public function __construct(
12
        private readonly bool $echoCLI = false
13
    ) {
14
        $this->colorCLI = new ColorCLI();
15
    }
16
    public function echo(string $message, string $type = 'primary'): void
17
    {
18
        if ($this->echoCLI) {
19
            $this->colorCLI->$type($message);
20
        }
21
    }
22
    public function debug(string $message): void
23
    {
24
        if ($this->echoCLI && config('app.env') === 'local' && config('app.debug') === true) {
25
            $this->colorCLI->debug('DEBUG: '.$message);
26
        }
27
    }
28
    public function echoDescription(int $totalReleases): void
29
    {
30
        if ($totalReleases > 1 && $this->echoCLI) {
31
            $this->echo(
32
                PHP_EOL.
33
                'Additional post-processing, started at: '.
34
                now()->format('D M d, Y G:i a').
35
                PHP_EOL.
36
                'Downloaded: (xB)=yEnc article, (cB)=compressed part'.
37
                PHP_EOL.
38
                'Failures: fC#=Compressed(part #), fS=Sample, fM=Media(video), fA=Audio, fJ=JPEG, G=Missing group'.
39
                PHP_EOL.
40
                'Processing: r=RAR, z=ZIP, 7z=7zip (names/entries), g=GZIP, b=BZIP2, x=XZ, (vRAW)=Inline video detected'.
41
                PHP_EOL.
42
                'Added: s=Sample image, j=JPEG image, A=Audio sample, a=Audio MediaInfo, v=Video sample'.
43
                PHP_EOL.
44
                'Added: m=Video MediaInfo, n=NFO, ^=Inner file details (RAR/ZIP/7z/etc)'.
45
                '',
46
                'header'
47
            );
48
        }
49
    }
50
    public function echoReleaseStart(int $releaseId, int $size): void
51
    {
52
        $this->echo(PHP_EOL.'['.$releaseId.']['.human_filesize($size, 1).']', 'primaryOver');
53
    }
54
    public function echoCompressedDownload(): void { $this->echo('(cB)', 'primaryOver'); }
55
    public function echoCompressedFailure(int $failCount): void { $this->echo('fC'.$failCount, 'warningOver'); }
56
    public function echoGroupUnavailable(): void { $this->echo('G', 'warningOver'); }
57
    public function echoSampleDownload(): void { $this->echo('(sB)', 'primaryOver'); }
58
    public function echoSampleFailure(): void { $this->echo('fS', 'warningOver'); }
59
    public function echoMediaInfoDownload(): void { $this->echo('(mB)', 'primaryOver'); }
60
    public function echoMediaInfoFailure(): void { $this->echo('fM', 'warningOver'); }
61
    public function echoAudioDownload(): void { $this->echo('(aB)', 'primaryOver'); }
62
    public function echoAudioFailure(): void { $this->echo('fA', 'warningOver'); }
63
    public function echoJpgDownload(): void { $this->echo('(jB)', 'primaryOver'); }
64
    public function echoJpgFailure(): void { $this->echo('fJ', 'warningOver'); }
65
    public function echoArchiveMarker(string $marker): void { $this->echo($marker, 'primaryOver'); }
66
    public function echoFileInfoAdded(): void { $this->echo('^', 'primaryOver'); }
67
    public function echoSampleCreated(): void { $this->echo('s', 'primaryOver'); }
68
    public function echoJpgSaved(): void { $this->echo('j', 'primaryOver'); }
69
    public function echoAudioSampleCreated(): void { $this->echo('A', 'primaryOver'); }
70
    public function echoAudioInfoAdded(): void { $this->echo('a', 'primaryOver'); }
71
    public function echoVideoCreated(): void { $this->echo('v', 'primaryOver'); }
72
    public function echoMediaInfoAdded(): void { $this->echo('m', 'primaryOver'); }
73
    public function echoNfoFound(): void { $this->echo('n', 'primaryOver'); }
74
    public function echoInlineVideo(): void { $this->echo('(vRAW)', 'primaryOver'); }
75
    public function warning(string $message): void { $this->echo($message, 'warning'); }
76
    public function echoReleaseDeleted(int $releaseId): void { $this->echo('Deleted broken release ID '.$releaseId, 'warningOver'); }
77
    public function endOutput(): void
78
    {
79
        if ($this->echoCLI) {
80
            echo PHP_EOL;
81
        }
82
    }
83
    public function isEnabled(): bool
84
    {
85
        return $this->echoCLI;
86
    }
87
}
88