Спасибо за ответ. Я продолжал копать и не нашел решения, но пришел к следующему.
def _local_deploy_impl(ctx):
target = ctx.attr.target
shell_commands = ""
for s in ctx.files.srcs:
shell_commands += "sudo cp %s %s\n" % (s.short_path, target) # <2>
ctx.actions.write(
output = ctx.outputs.executable,
is_executable = True,
content = shell_commands,
)
runfiles = ctx.runfiles(files = ctx.files.srcs)
return DefaultInfo(
executable = ctx.outputs.executable,
runfiles = runfiles,
)
local_deploy = rule(
executable = True,
implementation = _local_deploy_impl,
attrs = {
"srcs": attr.label_list(allow_files = True),
"target": attr.string(default = "/usr/local/bin", doc = "Deployment target directory"),
},
)
В том числе в файле сборки:
local_deploy(
name = "install",
srcs = [":binary"],
)
srcs ссылается на двоичные выходы другого правила, которое будет установлено локально.
Есть предложения по улучшению?
person
Graham Brooks
schedule
02.01.2021