Как мы заменили 527 символов адской команды protoc на одну команду

Если вы когда-нибудь генерировали код из .proto хотя бы для двух языков — вы меня поймёте.

Но длинная команда — это верхушка айсберга. Вот что реально бесит: - 🔀 У нескольких разработчиков разные версии protoc — генерируют по-разному. - 📦 googleapis копируем и храним в репозитории, но никто не помнит, когда его обновляли. - 🔍 Линтер? Нет, просто надеемся на код-ревью. Спойлер: не работает.

При этом контракты у нас — единый источник правды для Python-сервисов, Go-шлюза с REST-маппингом и OpenAPI-документации. Ошибиться в таком проекте очень просто.

💡 Узнал об easyp достаточно давно. Это обёртка над protoc, которая работает как менеджер зависимостей + линтер + генератор в одном флаконе. Для команд, где buf недоступен, — практически спасение.

Один конфиг вместо вороха флагов.

⚠️ Стоит отметить, что плагины требуется устанавливать самостоятельно (например, protoc-gen-python и protoc-gen-grpc-python не поставляются “из коробки”).

Всё это завернули в простой makefile — и жизнь стала проще.

🔥 Но не всё было гладко

EasyP не решил проблему с Python-импортами.

Пришлось писать скрипт, который правит импорты пост-обработкой. Костыль, но работает.

📌 EasyP не серебряная пуля, но 80% боли снял. Остальное добили скриптами.

Как мы заменили 527 символов адской команды protoc на одну команду
Если вы когда-нибудь генерировали код из .proto хотя бы для двух языков — вы меня поймёте.
Но длинная команда — это верхушка айсберга | Сетка — социальная сеть от hh.ru Как мы заменили 527 символов адской команды protoc на одну команду
Если вы когда-нибудь генерировали код из .proto хотя бы для двух языков — вы меня поймёте.
Но длинная команда — это верхушка айсберга | Сетка — социальная сеть от hh.ru