blob: 41d62d06649c6361c410e4f156525f829de38635 [file] [log] [blame]
# Copyright 2021 The Pigweed Authors
#
# 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
#
# https://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.
"""Utility for generating TS code with string replacement."""
load("@build_bazel_rules_nodejs//:providers.bzl", "run_node")
def _template_replacement_impl(ctx):
output_file = ctx.actions.declare_file(ctx.attr.output_file)
descriptor_data = ctx.files.descriptor_data[0]
template_file = ctx.files.template_file[0]
run_node(
ctx,
executable = "_template_replacement_bin",
inputs = [descriptor_data, template_file],
outputs = [output_file],
arguments = [
"--template",
template_file.path,
"--descriptor_data",
descriptor_data.path,
"--output",
output_file.path,
"--proto_root_dir",
ctx.attr.proto_root_dir,
],
)
return [DefaultInfo(files = depset([output_file]))]
template_replacement = rule(
implementation = _template_replacement_impl,
attrs = {
"_template_replacement_bin": attr.label(
executable = True,
cfg = "exec",
default = Label("@//pw_protobuf_compiler/ts/codegen:template_replacement_bin"),
),
"descriptor_data": attr.label(
allow_files = [".proto.bin"],
),
"proto_root_dir": attr.string(mandatory = True),
"output_file": attr.string(mandatory = True),
"template_file": attr.label(
allow_files = [".ts"],
default = Label("@//pw_protobuf_compiler/ts:ts_proto_collection_template"),
),
},
)