<?php namespace Laravel\Horizon\Console; use Illuminate\Console\Command; use Laravel\Horizon\Contracts\SupervisorRepository; use Symfony\Component\Console\Attribute\AsCommand; #[AsCommand(name: 'horizon:supervisors')] class SupervisorsCommand extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'horizon:supervisors'; /** * The console command description. * * @var string */ protected $description = 'List all of the supervisors'; /** * Execute the console command. * * @param \Laravel\Horizon\Contracts\SupervisorRepository $supervisors * @return void */ public function handle(SupervisorRepository $supervisors) { $supervisors = $supervisors->all(); if (empty($supervisors)) { return $this->components->info('No supervisors are running.'); } $this->output->writeln(''); $this->table([ 'Name', 'PID', 'Status', 'Workers', 'Balancing', ], collect($supervisors)->map(function ($supervisor) { return [ $supervisor->name, $supervisor->pid, $supervisor->status, collect($supervisor->processes)->map(function ($count, $queue) { return $queue.' ('.$count.')'; })->implode(', '), $supervisor->options['balance'], ]; })->all()); $this->output->writeln(''); } }