Вход Регистрация
Файл: vendor/laravel/framework/src/Illuminate/Console/View/Components/Task.php
Строк: 72
<?php

namespace IlluminateConsoleViewComponents;

use 
IlluminateConsoleViewTaskResult;
use 
IlluminateSupportInteractsWithTime;
use 
SymfonyComponentConsoleOutputOutputInterface;
use 
Throwable;

use function 
Termwindterminal;

class 
Task extends Component
{
    use 
InteractsWithTime;

    
/**
     * Renders the component using the given arguments.
     *
     * @param  string  $description
     * @param  (callable(): bool)|null  $task
     * @param  int  $verbosity
     * @return void
     *
     * @throws Throwable
     */
    
public function render($description$task null$verbosity OutputInterface::VERBOSITY_NORMAL)
    {
        
$description $this->mutate($description, [
            
MutatorsEnsureDynamicContentIsHighlighted::class,
            
MutatorsEnsureNoPunctuation::class,
            
MutatorsEnsureRelativePaths::class,
        ]);

        
$descriptionWidth mb_strlen(preg_replace("/<[w=#/;,:.&,%?]+>|\e[d+m/"'$1'$description) ?? '');

        
$this->output->write("  $description "false$verbosity);

        
$startTime microtime(true);

        
$result TaskResult::Failure->value;

        try {
            
$result = ($task ?: fn () => TaskResult::Success->value)();
        } catch (
Throwable $e) {
            throw 
$e;
        } finally {
            
$runTime $task
                
? (' '.$this->runTimeForHumans($startTime))
                : 
'';

            
$runTimeWidth mb_strlen($runTime);
            
$width min(terminal()->width(), 150);
            
$dots max($width $descriptionWidth $runTimeWidth 100);

            
$this->output->write(str_repeat('<fg=gray>.</>'$dots), false$verbosity);
            
$this->output->write("<fg=gray>$runTime</>"false$verbosity);

            
$this->output->writeln(
                
match ($result) {
                    
TaskResult::Failure->value => ' <fg=red;options=bold>FAIL</>',
                    
TaskResult::Skipped->value => ' <fg=yellow;options=bold>SKIPPED</>',
                    default => 
' <fg=green;options=bold>DONE</>'
                
},
                
$verbosity,
            );
        }
    }
}
Онлайн: 1
Реклама