Свой Composer без баннеров

54d454898b9fc629fc0469f42533a659

Или как собрать composer.phar из исходников, добавить собственные изменения, подписать архив валидной сигнатурой и жить дальше.

Шаг 1 из 7

Клонируем официальные исходники необходимой версии Composer в локальную папку

git clone https://github.com/composer/composer.git

Шаг 2 из 7

Скачиваем «токсичную» сборку, в которой хотим что-либо изменить

wget https://getcomposer.org/composer.phar

Шаг 3 из 7

Ставим зависимости. Появляется папка ./vendor

cd composer && php ../composer.phar install

Шаг 4 из 7

Вносим необходимые изменения. В данном случае, удаляем токсичный политический баннер от со-автора Composer Jordi Boggiano.

Ищем функцию writeError () и добавляем пару строк с str_replace ().

nano src/Composer/IO/ConsoleIO.php

public function writeError($messages, bool $newline = true, int $verbosity = self::NORMAL)
{
    $messages = str_replace('Ukraine', '', $messages);
    $messages = str_replace('#StandWith', '', $messages);
    $this->doWrite($messages, $newline, true, $verbosity);
}

Сохраняем. Можем проверить какие изменения у нас получились git status и git diff.

Шаг 5 из 7

Собираем свой новый Composer с фиксом. Composer умеет сам себя собирать в phar архив. Для чего запускаем bin/compile, выставив флаг readonly в 0.

php -d phar.readonly=0 bin/compile

** Кому интересен процесс сборки в деталях можно смотреть сюда https://github.com/composer/composer/blob/main/src/Composer/Compiler.php

Шаг 6 из 7

Проверяем, что больше никаких баннеров при апдейте пакетов, все изменения внесены и подписаны SHA512.

php composer.phar install
php composer.phar update

Шаг 7 из 7

Кто использует Composer глобально может перенести в /usr/local/bin

chmod +x composer.phar

sudo mv composer.phar /usr/local/bin/composer

** Надеюсь кому-то пригодится, кто левой пяткой во сне каждую ночь не собирает phar архивы своих проектов.

© Habrahabr.ru