Как мы заменили 527 символов адской команды protoc на одну команду
Если вы когда-нибудь генерировали код из .proto хотя бы для двух языков — вы меня поймёте.
Но длинная команда — это верхушка айсберга. Вот что реально бесит: - 🔀 У нескольких разработчиков разные версии protoc — генерируют по-разному. - 📦 googleapis копируем и храним в репозитории, но никто не помнит, когда его обновляли. - 🔍 Линтер? Нет, просто надеемся на код-ревью. Спойлер: не работает.
При этом контракты у нас — единый источник правды для Python-сервисов, Go-шлюза с REST-маппингом и OpenAPI-документации. Ошибиться в таком проекте очень просто.
💡 Узнал об easyp достаточно давно. Это обёртка над protoc, которая работает как менеджер зависимостей + линтер + генератор в одном флаконе. Для команд, где buf недоступен, — практически спасение.
Один конфиг вместо вороха флагов.
⚠️ Стоит отметить, что плагины требуется устанавливать самостоятельно (например, protoc-gen-python и protoc-gen-grpc-python не поставляются “из коробки”).
Всё это завернули в простой makefile — и жизнь стала проще.
🔥 Но не всё было гладко
EasyP не решил проблему с Python-импортами.
Пришлось писать скрипт, который правит импорты пост-обработкой. Костыль, но работает.
📌 EasyP не серебряная пуля, но 80% боли снял. Остальное добили скриптами.