blob: 6b2648721f63fbdc41f90947e0eee1ad430835a6 [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,
)