Файл: vendor/laravel/framework/src/Illuminate/Foundation/Console/DevCommand.php
Строк: 112
<?php
namespace IlluminateFoundationConsole;
use IlluminateConsoleCommand;
use IlluminateConsoleProhibitable;
use IlluminateFoundationDevCommands;
use IlluminateSupportNodePackageManager;
use SymfonyComponentConsoleAttributeAsCommand;
use function Termwindterminal;
#[AsCommand(name: 'dev')]
class DevCommand extends Command
{
use Prohibitable;
/**
* The console command name.
*
* @var string
*/
protected $name = 'dev';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Run the dev processes';
/**
* Execute the console command.
*
* @return int
*
* @throws Exception
*/
public function handle(NodePackageManager $packageManager)
{
if ($this->isProhibited()) {
return self::FAILURE;
}
$devCommands = DevCommands::commands();
$commands = array_column($devCommands, 'command');
$colors = array_column($devCommands, 'color');
$names = array_column($devCommands, 'name');
$longestName = max(array_map(strlen(...), $names));
$columns = getenv('COLUMNS');
putenv('COLUMNS='.max(terminal()->width() - $longestName - 4, 1));
$this->line('');
foreach ($devCommands as $devCommand) {
$this->line(
sprintf(
'<fg=%s>[%s]</>%s%s',
$devCommand['color'],
$devCommand['name'],
str_repeat(' ', ($longestName - strlen($devCommand['name'])) + 1),
$devCommand['command'],
),
);
}
$this->line('');
$command = $packageManager->getExecCommand(sprintf(
'concurrently -c "%s" "%s" --names=%s --kill-others-on-fail',
implode(',', $colors),
implode('" "', $commands),
implode(',', $names)
));
if (extension_loaded('pcntl')) {
pcntl_exec('/usr/bin/env', ['sh', '-c', $command]);
}
passthru($command, $exitCode);
$columns === false ? putenv('COLUMNS') : putenv("COLUMNS={$columns}");
return $exitCode;
}
}