Свой Composer без баннеров
Или как собрать 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 архивы своих проектов.