Получить базовый каталог для объявленных файлов

Иногда в моих правилах bazel мне нужно запустить инструмент, который создает кучу файлов, но записывает их в выходной каталог, и путь к каталогу должен использоваться в качестве аргумента. В итоге я получил следующий паттерн:

out_dir = "{}_out".format(ctx.label)
out_files = []
for file in ctx.files.srcs:
  file_path = # ... construct file path 
  o = ctx.actions.declare_file("{}/{}".format(out_dir, file_path))
  out_files.append(o)

# Now we need to fetch first file and strip out file path part
out = out_files[0].path
out = out[0:(out.find(out_dir) + len(out_dir)]

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

0 ответов

Другие вопросы по тегам