Bazel genrule: использовать переносы строк в команде - PullRequest
0 голосов
/ 10 октября 2019

Я использую жанру с большим количеством источников, которые имеют длинный идентификатор. Команде необходимо явным образом перечислить все источники, что приведет к созданию слишком длинного cmd. Поэтому я попытался использовать переносы строк (как известно из команд bash или shell) ... Однако, Базель жалуется на неопределенные строки.

genrule(
  name = "Aggregate_Reports",
  srcs = ["//really/long/path/to/module/ModuleA/src:CoverageHtml",
          "//really/long/path/to/module/ModuleA/src:TestRun",
          "//really/long/path/to/module/ModuleB/src:CoverageHtml",],
  outs = ["UT_Summary.txt"],
  message = "Create unified report",
  tools = [":Create_Summary"],
  cmd = "$(location :Create_Summary) -t \
              $(location //really/long/path/to/module/ModuleA/src:TestRun) \
              $(location //really/long/path/to/module/ModuleB/src:TestRun) \
                                     -c \
              $(location //really/long/path/to/module/ModuleA/src:CoverageHtml) \
              $(location //really/long/path/to/module/ModuleB/src:CoverageHtml) \
              -o $(@)",
  executable = True,
  visibility=["//visibility:public"],
)

Выход из \ with $ ничего не меняет ...

1 Ответ

2 голосов
/ 10 октября 2019

Как и в Python, вы можете использовать тройные кавычки для сохранения новых строк:

  cmd = """$(location :Create_Summary) -t \
              $(location //really/long/path/to/module/ModuleA/src:TestRun) \
              $(location //really/long/path/to/module/ModuleB/src:TestRun) \
                                     -c \
              $(location //really/long/path/to/module/ModuleA/src:CoverageHtml) \
              $(location //really/long/path/to/module/ModuleB/src:CoverageHtml) \
              -o $(@)""",
...