Skip to content

managed mod improvements#209

Merged
Yakwilik merged 2 commits intomainfrom
debug/bug
Mar 8, 2026
Merged

managed mod improvements#209
Yakwilik merged 2 commits intomainfrom
debug/bug

Conversation

@Yakwilik
Copy link
Copy Markdown
Member

@Yakwilik Yakwilik commented Mar 8, 2026

Что сделано

1. Приведено поведение managed mode к buf-like семантике

Исправлена логика применения managed mode для генерации кода.

Раньше глобальные override фактически применялись только к локальным файлам, а git_repo и зависимости могли ошибочно трактоваться как external-only inputs. Из-за этого сценарий с git_repo + managed + go_package_prefix не работал: go_package не выставлялся, и protoc-gen-go падал с ошибкой определения import path.

Теперь:

  • глобальные override применяются ко всем файлам в запросе генерации
  • это включает локальные inputs, git_repo inputs и зависимости
  • disable, module и path используются как селекторы для сужения правил, а не как обязательный opt-in для external файлов

Это делает поведение ближе к buf managed mode и исправляет кейс с генерацией из git_repo.

2. Добавлен селектор package для managed mode

В managed.disable и managed.override добавлена поддержка селектора package.

Он матчится по protobuf package из самого .proto файла точным совпадением и позволяет:

  • адресно задавать go_package / go_package_prefix и другие file options для конкретного proto package
  • точечно отключать managed mode для конкретного proto package
  • использовать более удобный способ таргетинга правил, когда module или path неудобны

Важно:

  • package — это расширение EasyP, а не часть buf config
  • field-поведение не менялось и остаётся buf-like: оно используется только с field_option

3. Обновлены schema, MCP docs и пользовательская документация

Обновлены:

  • config schema
  • MCP easypconfig metadata
  • EN/RU guide по generator managed mode
  • сгенерированные search indexes и docs/dist

4. Добавлены и обновлены тесты

Добавлено покрытие на:

  • generate + git_repo + managed mode
  • применение global managed overrides к external files
  • disable для external modules
  • package-scoped override
  • package-scoped disable
  • config parsing / raw validation / schema docs для нового package selector

Для новых тестов вместо hand-written stubs используются mockery-generated mocks через go:generate.

Изменение поведения

После этого PR:

  • global managed.override применяется ко всем файлам генерации, включая зависимости
  • если внешние зависимости не нужно переписывать, их нужно явно исключать через managed.disable
  • правила managed mode можно адресовать не только по module и path, но и по protobuf package

Проверка

Проверено командами:

  • go test ./...
  • task schema:generate
  • cd docs && npm run build

Yakwilik added 2 commits March 8, 2026 06:25
Apply managed mode overrides to all files in the generation request, including dependencies and git_repo inputs, and rely on disable/module/path selectors only to narrow rules.

Add regression coverage for generate + git_repo + managed mode, switch the new core test mocks to direct mockery go:generate directives, and update the guide/spec docs plus built search indexes to match the new semantics.
Add exact package-based matching for managed mode disable and override rules, wire it through config parsing, runtime conversion, JSON schema, MCP docs, and user guides, and cover the new behavior with runtime/config/schema tests.
@Yakwilik Yakwilik merged commit 37d422b into main Mar 8, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant