vyatka-it/grievous

Module manager

Maintainers

Package info

gitlab.vyatka-it.ru/laravel-packages/grievous-module-manager.git

pkg:composer/vyatka-it/grievous

Statistics

Installs: 58

Dependents: 0

Suggesters: 0

dev-main 2026-06-02 15:06 UTC

This package is auto-updated.

Last update: 2026-06-02 15:06:21 UTC


README

  *  .       *    .        *     .    *   .      *    .       *
     .   ██████╗ ██████╗ ██╗███████╗██╗   ██╗ ██████╗ ██╗   ██╗███████╗   .
  *     ██╔════╝ ██╔══██╗██║██╔════╝██║   ██║██╔═══██╗██║   ██║██╔════╝      *
    .   ██║  ███╗██████╔╝██║█████╗  ██║   ██║██║   ██║██║   ██║███████╗   .
  *     ██║   ██║██╔══██╗██║██╔══╝  ╚██╗ ██╔╝██║   ██║██║   ██║╚════██║     *
     .  ╚██████╔╝██║  ██║██║███████╗ ╚████╔╝ ╚██████╔╝╚██████╔╝███████║  .
  *      ╚═════╝ ╚═╝  ╚═╝╚═╝╚══════╝  ╚═══╝   ╚═════╝  ╚═════╝ ╚══════╝    *
     .        *    .      *     .   *    .        *    .      *    .

Менеджер модулей

Требования окружения

  • Composer
  • Laravel-компоненты ^13.0 (illuminate/support, illuminate/console)
  • PHP-расширение ext-fileinfo

Установка

composer require vyatka-it/grievous:@dev

Быстрый старт

php artisan griv:init

Команда публикует:

  • config/grievous.php
  • app/Providers/ModuleServiceProvider.php

Добавьте в app\Providers\AppServiceProvider в метод register:

    public function register(): void
    {
        //...
    
        $this->app->register(ModuleServiceProvider::class);
    }

Команды

Установить модуль

php artisan griv:install <module>

Примеры:

php artisan griv:install client
php artisan griv:install flash-call

Активировать модуль

php artisan griv:activate <module>

Пример:

php artisan griv:activate client

Деактивировать модуль

php artisan griv:deactivate <module>

Пример:

php artisan griv:deactivate client

Показать список модулей

Все опубликованные модули:

php artisan griv:list

Только активные модули:

php artisan griv:list active

Доступные модули

Сейчас в стандартном списке доступны:

  • client
  • flash-call

Гибкая конфигурация

После php artisan griv:init публикуется файл config/grievous.php. В нём можно менять:

  • modulesStruct (корневую директорию модулей, namespace, имя файла настроек, игнорируемые файлы/папки)
  • targetDir (куда публикуются модули)
  • vendorDir (где искать пакеты, если используется composer-транспорт)
  • moduleList (класс enum со списком модулей)
  • transport (Transport::GIT или Transport::COMPOSER)

Список модулей можно полностью подменить: укажите свой enum, реализующий контракт VyatkaIt\Grievous\Contracts\Enums\ModuleList.

<?php

use VyatkaIt\Grievous\Contracts\Enums\ModuleList;
use VyatkaIt\Grievous\DTOs\ModuleMeta;

enum CustomModule: string implements ModuleList
{
    case BILLING = 'billing';

    public function meta(): ModuleMeta
    {
        return new ModuleMeta(
            package: 'acme/billing-module',
            packageName: 'billing-module',
            repoLink: 'https://git.example.com/acme/billing-module.git',
            publishModuleName: 'Billing',
            namespace: 'Acme\\Module\\Billing\\',
        );
    }
}

И затем подставьте его в config/grievous.php:

moduleList: CustomModule::class,

Типовой сценарий

php artisan griv:init
php artisan griv:install client
php artisan griv:activate client
php artisan griv:list active

Планы на будущее

  • Одна команда для установки всего необходимого - приоритет
  • UI-админка модулей
  • Связки (готовые наборы для типовых проектов)
  • Типизация модулей под разные задачи