Сделать выход gofmt со статусом выхода 1, когда gofmt предлагает изменения?

Я хотел бы добавить gofmt в конвейер CI / CD. Если он производит изменения, я хочу, чтобы gofmt завершил работу со статусом 1.

Например, если я запускаю gofmt -s -l . и в списке есть несколько файлов. Я хочу, чтобы он завершился со статусом 1. Прямо сейчас, когда я запускаю echo $?, я получаю 0, даже если есть некоторые файлы, перечисленные с изменениями gofmt.

Я проверил документацию и не смог найти соответствующий параметр командной строки. Есть ли для этого взлом bash?


person Vasantha Ganesh    schedule 03.05.2019    source источник


Ответы (2)


Вам просто нужно убедиться, что gofmt перечисляет еще одну строку вывода, проверив, что вывод wc -l не пуст, а затем запустите двоичный false, который устанавливает код выхода на 1 для вызванной оболочки или используйте exit 1 для выхода из сценария. явно.

if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then
    exit 1
fi

Когда вы говорите gofmt на самом деле возвращает $? как 0, даже если есть файлы в списке ?, в этом случае вы также можете просто сделать

if gofmt -s -l . > /dev/null; then
    exit 1
fi

Вышеупомянутое условие if зависит от кода выхода, возвращаемого gofmt, поскольку 0 будет указывать на успешное выполнение команды, а условное выражение будет утверждать истину.

person Inian    schedule 03.05.2019

Вы можете использовать

test -z $(gofmt -l .)
person Hongbo Miao    schedule 13.06.2021