Базель - лучшая документация для каких провайдеров используется какое-либо данное правило? - PullRequest
0 голосов
/ 03 апреля 2020

Я пишу пользовательское правило, которое принимает входные данные от cc_library, cc_binary, apple_static_library и некоторых других правил c, определяемых платформой. Я хотел бы просмотреть каждый API, данный мне через ссылку ctx.attr.foo внутри функции реализации пользовательского правила.

Здесь есть список поставщиков https://docs.bazel.build/versions/master/skylark/lib/skylark-provider.html, но это не так Скажите, какие правила их используют.

Есть ли лучшая практика для просмотра того, что мне предоставляют эти правила, или требуется прохождение источника для каждого из них?

1 Ответ

1 голос
/ 05 апреля 2020

Вы можете получить список провайдеров для данной цели с помощью dir . Что-то вроде этого полезно для отладки:

def _print_attrs_impl(ctx):
  for target in ctx.attr.targets:
    print('%s: %s' % (target.label, dir(target)))

Часто полезна печать из разрабатываемого вами правила, чтобы убедиться, что цели действительно соответствуют вашим ожиданиям.

Вы можно также применить dir к самим провайдерам, чтобы увидеть, какие поля у них есть.

...