diff options
author | ambrosin <ambrosin@google.com> | 2022-04-19 02:36:59 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2022-04-19 02:37:47 -0700 |
commit | db2e149a6214e1492f27982b688547b926187b6d (patch) | |
tree | 8cd8ee7084a71f9dcc75709393a808cc113a9501 /java_src/template_rule.bzl | |
parent | 9dbe5a271cf21005cc462ad73b42fcfddf89cfeb (diff) | |
download | tink-db2e149a6214e1492f27982b688547b926187b6d.tar.gz |
Make template_rule.bzl local to each workspace that use it.
PiperOrigin-RevId: 442755202
Diffstat (limited to 'java_src/template_rule.bzl')
-rw-r--r-- | java_src/template_rule.bzl | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/java_src/template_rule.bzl b/java_src/template_rule.bzl new file mode 100644 index 000000000..badceb97c --- /dev/null +++ b/java_src/template_rule.bzl @@ -0,0 +1,58 @@ +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Rule for simple expansion of template files.""" + +def _template_rule_impl(ctx): + """Modifies ctx.file.src keys in ctx.attr.substitutions with corresponding values.""" + ctx.actions.expand_template( + template = ctx.file.src, + output = ctx.outputs.out, + substitutions = ctx.attr.substitutions, + ) + +# Rule for simple expansion of template files. Modifies the templates in src substituting the keys +# in substitutions with the corresponding values; the result is output to out. +# +# Borrowed from TensorFlow (https://github.com/tensorflow/tensorflow) +# +# Typical usage: +# template_rule( +# name = "ExpandMyTemplate", +# src = "my.template", +# out = "my.txt", +# substitutions = { +# "$VAR1": "foo", +# "$VAR2": "bar", +# } +# ) +# +# Args: +# name: The name of the rule. +# src: The template file to expand +# out: The destination of the expanded file +# substitutions: A dictionary mapping strings to their substitutions +template_rule = rule( + attrs = { + "src": attr.label( + mandatory = True, + allow_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, +) |