Я тут узнал отличную новость: теперь оказывается можно нормально фиксировать dev-инструменты — прямо в
go.mod, без костылей.Например, если ты используешь
oapi-codegen (а ты точно его используешь, если генерируешь сервер/клиента из OpenAPI v3, ведь так?)):go get -tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@latest
Это добавит в
go.mod строку:tool github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen
И дальше можно:
go install tool
//go:generate go tool oapi-codegen -config cfg.yaml ../../api.yaml
Всё! Теперь:
— Версия
oapi-codegen зафиксирована— Команда
go install tool установит его любому разработчику— Можно забыть про
tools.go и ручное go installА раньше что?
Костыли:
—
tools.go с анонимными импортами (import _ )—
makefile с GOBIN=./bin go install и GOBIN=./bin go generate — магия в README, которую никто не читал
Теперь всё по-взрослому, понятно и воспроизводимо.
Go продолжает радовать! 🙌