Add js_component rule from Gerrit core Change-Id: I1db7c326a9af1aaefcd703dc1d8f588106488edd
diff --git a/js/BUILD b/js/BUILD new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/js/BUILD
diff --git a/js/defs.bzl b/js/defs.bzl new file mode 100644 index 0000000..dd95df9 --- /dev/null +++ b/js/defs.bzl
@@ -0,0 +1,3 @@ +load("//js/private:js_component.bzl", _js_component = "js_component") + +js_component = _js_component
diff --git a/js/private/BUILD b/js/private/BUILD new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/js/private/BUILD
diff --git a/js/private/js_component.bzl b/js/private/js_component.bzl new file mode 100644 index 0000000..11ba396 --- /dev/null +++ b/js/private/js_component.bzl
@@ -0,0 +1,47 @@ +ComponentInfo = provider() + +def _js_component(ctx): + dir = ctx.outputs.zip.path + ".dir" + name = ctx.outputs.zip.basename + if name.endswith(".zip"): + name = name[:-4] + dest = "%s/%s" % (dir, name) + cmd = " && ".join([ + "TZ=UTC", + "export TZ", + "mkdir -p %s" % dest, + "cp %s %s/" % (" ".join([s.path for s in ctx.files.srcs]), dest), + "cd %s" % dir, + "find . -exec touch -t 198001010000 '{}' ';'", + "zip -Xqr ../%s *" % ctx.outputs.zip.basename, + ]) + + ctx.actions.run_shell( + inputs = ctx.files.srcs, + outputs = [ctx.outputs.zip], + command = cmd, + mnemonic = "GenJsComponentZip", + ) + + licenses = [] + if ctx.file.license: + licenses.append(ctx.file.license) + + return [ + ComponentInfo( + transitive_licenses = depset(licenses), + transitive_versions = depset(), + transitive_zipfiles = list([ctx.outputs.zip]), + ), + ] + +js_component = rule( + _js_component, + attrs = { + "srcs": attr.label_list(allow_files = [".js"]), + "license": attr.label(allow_single_file = True), + }, + outputs = { + "zip": "%{name}.zip", + }, +)