Композитор Сценарий эхо - PullRequest
0 голосов
/ 31 марта 2019

Каков наилучший способ отобразить консоль в сценарии composer.json? Например, я использовал раздел сценариев для создания пользовательского установщика, и в конце я хочу отобразить сообщение в консоли.

В данный момент я просто делаю эхо, подобное этому

"scripts": {
    "post-update-cmd": [
        "clear",
        "echo \"\n\nInstallation Complete\""
    ]
}

Это работает, но выводит команду и эхо в консоли, поэтому в конечном итоге выглядит следующим образом.

enter image description here

Когда композитор выводит все пользовательские команды, которые есть в скриптах, он все равно удваивается и выглядит ужасно!

Каков наилучший и самый чистый способ использования сценариев composer для вывода сообщения на консоль?

1 Ответ

0 голосов
/ 31 марта 2019

Если вы используете класс PHP вместо использования оболочки непосредственно для своих сценариев, вы можете использовать систему ввода-вывода Composers для записи в консоль.

Например, создайте класс, подобный этому:

<?php

declare(strict_types=1);

namespace MyApp\Composer;

use Composer\Script\Event;

class ScriptHandler
{
    public static function myScript(Event $event): void
    {
        // Your script here
    }
}

Composer\Script\Event класс имеет метод с именем getIO(), который вы можете использовать для получения экземпляра Composer\IO\IOInterface, который затем имеет метод write, благодаря чему ваш myScript метод выглядит примерно так:

public static function myScript(Event $event): void
{
    $event->getIO()->write('foo'):
}

Наконец, чтобы использовать этот класс, просто укажите его в своем post-update-cmd:

"scripts": {
    "post-update-cmd": [
        "MyApp\\Composer\\ScriptHandler::myScript"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...