| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- namespace Laravel\Pail;
- use Illuminate\Console\Events\CommandStarting;
- use Illuminate\Contracts\Foundation\Application;
- use Illuminate\Log\Events\MessageLogged;
- use Illuminate\Queue\Events\JobExceptionOccurred;
- use Illuminate\Queue\Events\JobProcessed;
- use Illuminate\Queue\Events\JobProcessing;
- use Illuminate\Support\ServiceProvider;
- use Laravel\Pail\Console\Commands\PailCommand;
- class PailServiceProvider extends ServiceProvider
- {
- /**
- * Registers the application services.
- */
- public function register(): void
- {
- $this->app->singleton(
- Files::class,
- fn (Application $app) => new Files($app->storagePath('pail'))
- );
- $this->app->singleton(Handler::class, fn (Application $app) => new Handler(
- $app,
- $app->make(Files::class),
- $app->runningInConsole(),
- ));
- }
- /**
- * Bootstraps the application services.
- */
- public function boot(): void
- {
- if (! $this->runningPailTests() && ($this->app->runningUnitTests() || ($_ENV['VAPOR_SSM_PATH'] ?? false))) {
- return;
- }
- /** @var \Illuminate\Contracts\Events\Dispatcher $events */
- $events = $this->app->make('events');
- $events->listen(MessageLogged::class, function (MessageLogged $messageLogged) {
- /** @var Handler $handler */
- $handler = $this->app->make(Handler::class);
- $handler->log($messageLogged);
- });
- $events->listen([CommandStarting::class, JobProcessing::class, JobExceptionOccurred::class], function (CommandStarting|JobProcessing|JobExceptionOccurred $lifecycleEvent) {
- /** @var Handler $handler */
- $handler = $this->app->make(Handler::class);
- $handler->setLastLifecycleEvent($lifecycleEvent);
- });
- $events->listen([JobProcessed::class], function () {
- /** @var Handler $handler */
- $handler = $this->app->make(Handler::class);
- $handler->setLastLifecycleEvent(null);
- });
- if ($this->app->runningInConsole()) {
- $this->commands([
- PailCommand::class,
- ]);
- }
- }
- /**
- * Determines if the Pail's test suite is running.
- */
- protected function runningPailTests(): bool
- {
- return $_ENV['PAIL_TESTS'] ?? false;
- }
- }
|