blob: c89c9fdeae3817cd48ac53fa3eac99422cefbabd [file] [log] [blame]
def _copy_go_binary_impl(ctx):
output = ctx.actions.declare_file(ctx.label.name)
for f in ctx.attr.src.files.to_list():
# go_binary rules have two outputs, a library and the binary itself.
# The following is a horrible hack to avoid copying the library.
if f.path.endswith(".a"):
continue
ctx.actions.run_shell(
inputs = [f],
outputs = [output],
mnemonic = "CopyGoBinary",
command = "mkdir -p %s && cp %s %s" % (output.dirname, f.path, output.path),
)
return [DefaultInfo(executable = output)]
copy_go_binary = rule(
implementation = _copy_go_binary_impl,
attrs = {
"src": attr.label(mandatory = True, allow_files = True),
},
executable = True,
)