62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
# 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"),
|
|
),
|
|
},
|
|
)
|