Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
laravel
/
framework
/
src
/
Illuminate
/
Console
/
Scheduling
:
ScheduleTestCommand-20250317112632.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Illuminate\Console\Scheduling; use Illuminate\Console\Application; use Illuminate\Console\Command; use Symfony\Component\Console\Attribute\AsCommand; use function Laravel\Prompts\select; #[AsCommand(name: 'schedule:test')] class ScheduleTestCommand extends Command { /** * The console command name. * * @var string */ protected $signature = 'schedule:test {--name= : The name of the scheduled command to run}'; /** * The console command description. * * @var string */ protected $description = 'Run a scheduled command'; /** * Execute the console command. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ public function handle(Schedule $schedule) { $phpBinary = Application::phpBinary(); $commands = $schedule->events(); $commandNames = []; foreach ($commands as $command) { $commandNames[] = $command->command ?? $command->getSummaryForDisplay(); } if (empty($commandNames)) { return $this->components->info('No scheduled commands have been defined.'); } if (! empty($name = $this->option('name'))) { $commandBinary = $phpBinary.' '.Application::artisanBinary(); $matches = array_filter($commandNames, function ($commandName) use ($commandBinary, $name) { return trim(str_replace($commandBinary, '', $commandName)) === $name; }); if (count($matches) !== 1) { $this->components->info('No matching scheduled command found.'); return; } $index = key($matches); } else { $index = $this->getSelectedCommandByIndex($commandNames); } $event = $commands[$index]; $summary = $event->getSummaryForDisplay(); $command = $event instanceof CallbackEvent ? $summary : trim(str_replace($phpBinary, '', $event->command)); $description = sprintf( 'Running [%s]%s', $command, $event->runInBackground ? ' in background' : '', ); $this->components->task($description, fn () => $event->run($this->laravel)); if (! $event instanceof CallbackEvent) { $this->components->bulletList([$event->getSummaryForDisplay()]); } $this->newLine(); } /** * Get the selected command name by index. * * @param array $commandNames * @return int */ protected function getSelectedCommandByIndex(array $commandNames) { if (count($commandNames) !== count(array_unique($commandNames))) { // Some commands (likely closures) have the same name, append unique indexes to each one... $uniqueCommandNames = array_map(function ($index, $value) { return "$value [$index]"; }, array_keys($commandNames), $commandNames); $selectedCommand = select('Which command would you like to run?', $uniqueCommandNames); preg_match('/\[(\d+)\]/', $selectedCommand, $choice); return (int) $choice[1]; } else { return array_search( select('Which command would you like to run?', $commandNames), $commandNames ); } } }