Issues (224)

src/Console/Logger/CompilerLogger.php (1 issue)

Labels
Severity
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of the box project.
7
 *
8
 * (c) Kevin Herrera <[email protected]>
9
 *     Théo Fidry <[email protected]>
10
 *
11
 * This source file is subject to the MIT license that is bundled
12
 * with this source code in the file LICENSE.
13
 */
14
15
namespace KevinGH\Box\Console\Logger;
16
17
use Fidry\Console\IO;
18
use InvalidArgumentException;
19
use Symfony\Component\Console\Output\OutputInterface;
20
use function sprintf;
21
22
/**
23
 * @internal
24
 */
25
final readonly class CompilerLogger
0 ignored issues
show
A parse error occurred: Syntax error, unexpected T_READONLY, expecting T_CLASS on line 25 at column 6
Loading history...
26
{
27
    public const QUESTION_MARK_PREFIX = '?';
28
    public const STAR_PREFIX = '*';
29
    public const PLUS_PREFIX = '+';
30
    public const MINUS_PREFIX = '-';
31
    public const CHEVRON_PREFIX = '>';
32
33
    public function __construct(private IO $io)
34
    {
35
    }
36
37
    public function getIO(): IO
38
    {
39
        return $this->io;
40
    }
41
42
    public function log(string $prefix, string $message, int $verbosity = OutputInterface::OUTPUT_NORMAL): void
43
    {
44
        $prefix = match ($prefix) {
45
            '!' => "<error>{$prefix}</error>",
46
            self::STAR_PREFIX => "<info>{$prefix}</info>",
47
            self::QUESTION_MARK_PREFIX => "<comment>{$prefix}</comment>",
48
            self::PLUS_PREFIX, self::MINUS_PREFIX => "  <comment>{$prefix}</comment>",
49
            self::CHEVRON_PREFIX => "    <comment>{$prefix}</comment>",
50
            default => throw new InvalidArgumentException('Expected one of the logger constant as a prefix.'),
51
        };
52
53
        $this->io->writeln(
54
            "{$prefix} {$message}",
55
            $verbosity,
56
        );
57
    }
58
59
    public function logStartBuilding(string $path): void
60
    {
61
        $this->io->writeln(
62
            sprintf(
63
                '🔨  Building the PHAR "<comment>%s</comment>"',
64
                $path,
65
            ),
66
        );
67
        $this->io->newLine();
68
    }
69
}
70