Laravel: Пакет для запуска кода и команд.

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();
 }
}

Рейтинг
( Пока оценок нет )
Maxyc Webber/ автор статьи
Мне 35 лет. Опыт профессиональной разработки 15 лет. Занимаюсь разработкой и поддержкой корпоративных систем автоматизации бизнеса, а также высоконагруженными проектами. Мне нравится решать нестандартные проблемы бизнеса. Имею опыт формирования команд под проект, налаживания процесса разработки, коммуникации программистов и заказчиков. Есть опыт работы с зарубежными заказчиками (ОАЭ, Польша, Германия, Швейцария).
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.