Сделайте gofmt выход со статусом выхода 1, когда gofmt предлагает изменения? - PullRequest
1 голос
/ 03 мая 2019

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

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

Я проверил документы и не смог найти соответствующий параметр командной строки. Есть ли взломать Bash, чтобы сделать это?

1 Ответ

1 голос
/ 03 мая 2019

Вам просто нужно убедиться, что gofmt перечисляет еще одну строку вывода, проверив, что вывод wc -l не пуст, а затем запустите двоичный файл false, который устанавливает код выхода на 1 дляshell вызывается или используется 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 будет указывать на успешное выполнение команды, а условие будет утверждать истину.

...