Я пытаюсь написать макрос, чтобы абстрагироваться от набора правил, которые мне нужны для нескольких различных целей.Одна вещь, которую мне нужно сделать, это создать небольшой файл, который будет рассматриваться как исходный файл в следующем правиле.Если бы это было правилом, я бы просто использовал expand_template .Лучшее, что я могу сейчас предложить, - это native.genrule
и проверка того, что я правильно все экранировал и передаю его в эхо.
Я надеюсь, что есть более простой способ.
Код, о котором идет речь:
racket_contents = """
#lang racket/base
(require
"bootstrap-compiler.rkt"
racket/runtime-path)
(define-runtime-path library-compiler-list-file "%s")
(run-bootstrap-compiler library-compiler-list-file #"%s_main")
""" % (source_file_list, short_name)
native.genrule(
name = "racketize_" + name,
outs = [racket_src_name],
cmd = "echo >>$@ '%s'" % racket_contents,
)