https://github.com/ash-jc-allen/laravel-executor
Пакет Laravel, упрощающий выполнение кода и команд при установке или обновлении веб-приложения. Например, из веб приложения выполнить команду артисан для парсинга, или просто почистить кеш.
Пакет был разработан и протестирован для работы со следующими минимальными требованиями:
- PHP 7.2
- Laravel 6
Установка пакета
composer require ashallendesign/laravel-executor
Использование
Создание исполнителя
php artisan make:executor YourExecutorNameHere -с
Приведенная выше команда создаст класс YourExecutorNameHere
в папке app/Commands
.
Добавление команды Artisan
Чтобы запустить команду Artisan через класс Executor, вы можете использовать метод runArtisan
. Например, приведенный ниже код показывает, как можно настроить Executor для запуска встроенного Laravel php artisan cache:clear
команды:
<?php namespace App\Executor; use AshAllenDesign\LaravelExecutor\Classes\Executor; class AppUpdate extends Executor { public function run(): Executor { return $this->runArtisan('cache:clear'); } }
В некоторых случаях вы можете запустить команду, которая требует вашего ввода. Например, у вас может быть команда, которая создает нового пользователя в базе данных и нуждается в том, чтобы вы ввели данные. В этом случае вы можете вторым параметром метода runArtisan указать true, чтобы указать, что это интерактивная команда.
Чтобы запустить команду, которая не может быть запущена с помощью Artisan, через ваш класс Executor, вы можете использовать метод runExternal()
. Например, приведенный ниже код показывает, как можно настроить Executor для запуска композера:
<?php namespace App\Executor; use AshAllenDesign\LaravelExecutor\Classes\Executor; class AppUpdate extends Executor { public function run(): Executor { return $this->runExternal('composer install'); } }
Как и с прошлой командой, можно указать вторым параметром, что эта команда интерактивная и может потребовать ввода.
Существует так же метод runClosure для замыканий. Там так же ничего сложного нет
<?php namespace App\Executor; use AshAllenDesign\LaravelExecutor\Classes\Executor; class AppUpdate extends Executor { public function run(): Executor { return $this->runClosure(static function(){ // same run }); } }
Добавление Уведомлений На Рабочий Стол
Если вы запускаете своего исполнителя через консоль, вы можете захотеть отображать уведомления на рабочем столе между некоторыми шагами. Чтобы показывать уведомление на рабочем столе вы можете использовать либо ->simpleDesktopNotification()
или ->desktopNotification()
.
Пользуясь ->simpleDesktopNotification()
вы можете передать только заголовок и тело, которые должны быть отображены. Пример ниже показывает, как создать простое уведомление на рабочем столе:
<?php namespace App\Executor; use AshAllenDesign\LaravelExecutor\Classes\Executor; class AppUpdate extends Executor { public function run(): Executor { return $this- > >simpleDesktopNotification('Notification title', 'Notification body'); } }
Примеры
В приведенном ниже примере показано, как создать класс Executor, который можно запустить после извлечения новой ветви проекта из удаленного репозитория:
<?php namespace App\Executor; use AshAllenDesign\LaravelExecutor\Classes\Executor; class AppUpdate extends Executor { public function run(): Executor { return $this- > >simpleDesktopNotification('Starting Executor', 'Starting the AppUpdate Executor.') - >>runExternal('composer install') - >>runArtisan('migrate') - >>runArtisan('cache:clear') - >>completeNotification(); } }