blob: 996a07bd6614e782de8b8644eec2082d4f3bad3c [file] [log] [blame]
def _copy_go_binary_impl(ctx):
output = ctx.actions.declare_file(ctx.label.name)
for f in ctx.attr.src.files:
# 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.action(
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,
)