aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/common.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/common.bzl')
-rw-r--r--third_party/common.bzl43
1 files changed, 43 insertions, 0 deletions
diff --git a/third_party/common.bzl b/third_party/common.bzl
new file mode 100644
index 0000000000..db981a5e31
--- /dev/null
+++ b/third_party/common.bzl
@@ -0,0 +1,43 @@
+# Rule for simple expansion of template files. This performs a simple
+# search over the template file for the keys in substitutions,
+# and replaces them with the corresponding values.
+#
+# Typical usage:
+# load("/tools/build_rules/template_rule", "expand_header_template")
+# template_rule(
+# name = "ExpandMyTemplate",
+# src = "my.template",
+# out = "my.txt",
+# substitutions = {
+# "$VAR1": "foo",
+# "$VAR2": "bar",
+# }
+# )
+#
+# Args:
+# name: The name of the rule.
+# template: The template file to expand
+# out: The destination of the expanded file
+# substitutions: A dictionary mapping strings to their substitutions
+
+def template_rule_impl(ctx):
+ ctx.template_action(
+ template = ctx.file.src,
+ output = ctx.outputs.out,
+ substitutions = ctx.attr.substitutions,
+ )
+
+template_rule = rule(
+ attrs = {
+ "src": attr.label(
+ mandatory = True,
+ allow_files = True,
+ single_file = True,
+ ),
+ "substitutions": attr.string_dict(mandatory = True),
+ "out": attr.output(mandatory = True),
+ },
+ # output_to_genfiles is required for header files.
+ output_to_genfiles = True,
+ implementation = template_rule_impl,
+)