blob: 2e62bae3770f3977928222ed693ee75ec8ed92d7 [file] [log] [blame] [edit]
def _expand(files, ex):
expanded = []
for f in files:
more_f = ex.expand(f)
for mf in more_f:
if not mf.is_directory:
expanded.append("%s=%s" % (mf.short_path, mf.path))
return expanded
def _zip_file_impl(ctx):
name = "%s.%s" % (ctx.label.name, ctx.attr.extension)
output = ctx.actions.declare_file(name)
args = ctx.actions.args()
args.add_all(["Cc", output])
args.add_all([ctx.files.srcs], map_each = _expand)
ctx.actions.run(
executable = ctx.executable._zip,
arguments = [args],
inputs = ctx.files.srcs,
outputs = [output],
)
return DefaultInfo(
files = depset([output]),
)
zip_file = rule(
_zip_file_impl,
attrs = {
"extension": attr.string(
default = "zip",
),
"srcs": attr.label_list(
allow_empty = True,
allow_files = True,
),
"_zip": attr.label(
default = "@bazel_tools//tools/zip:zipper",
executable = True,
cfg = "exec",
),
},
)