2015-02-13 3 views
1

Цель

Стоп композитор установить запуск, если .env отсутствуетКак предотвратить предотвратить композитору печать немедленно STDERR на стандартный вывод

composer.json сниппет

"scripts": { 
    "pre-install-cmd": "[[ -a .env ]] || echo '.env missing. please create .env' 1>&2 && exit 1;" 
}, 

Выход

$ composer install 
.env missing. please create .env 
Script [[ -a .env ]] || >&2 echo '.env missing. please create .env' && exit 1; handling the pre-install-cmd event returned with an error 



    [RuntimeException] 
    Error Output: .env missing. please create .env 

Желаемая

То же, что и выше, но без хлама, в частности, сразу-вторил & избыточную .env missing. please create .env

Вопрос

Как предотвратить композитор сразу вторя эту строку? Это даже происходит с переключателем -q

+0

Ваш скрипт правильно возвращает ошибку, у композитора должна быть логика для остановки. Может ли сценарий генерировать рабочий .env, когда он отсутствует? –

ответ

0

Интересно, как это должно работать?

Вы просите композитора запустить ваш скрипт. Этот скрипт создает вывод, который отображается.

Теперь код возврата из этого сценария сигнализирует об ошибке. Остальное - композитору. Это хорошая идея сообщить пользователю, с каким сценарием не удалось (что объясняет строку непосредственно после эхо-выхода), потому что скрипты не должны что-то повторять, и вы можете запускать более одной строки сценария.

И затем общее отображение ошибки Composer выдает в другой раз, заявив еще раз, что условие ошибки произвело некоторый вывод.

Теперь мне интересно, что вы хотите подавить. Эта первая строка? Тогда не повторяйте ничего.

Любые более поздние строки? Не повезло, так Composer обрабатывает ошибки вообще.

Возвращаясь назад и глядя на картинку большего размера, я бы спросил, почему Composer не должно быть разрешено устанавливать зависимости? Composer не нуждается в этом файле - и если ваш код нуждается в нем, он должен предоставить пользователю более простой способ создания этого файла или проверить его отсутствие и реагировать либо с разумным допуском по умолчанию, либо отказаться от работы, - что позволило бы вам лучше контролировать условия отображения сообщения об ошибке.

+0

Что я хочу подавить - это выход 2x той же строки. Имеет ли это смысл? Я повторяю это * для stderr *, который обычно не попадает в stdout, это точка перенаправления, если я не ухожу. Похоже, что композитор направляет как ошибки, так и вывод в stdout, а затем сообщает об ошибках во второй раз при неудаче. ANYWAY, чтобы уточнить, я хочу, чтобы выход ошибки 1x. –

Смежные вопросы