blob: 8beea9443124cc53b5c60cffc135afb118366117 [file]
"npm_linked_packages rule"
load("@rules_nodejs//nodejs:providers.bzl", "DeclarationInfo", "declaration_info")
load(":npm_link_package.bzl", _npm_link_package_direct_lib = "npm_link_package_direct_lib")
_DOC = """Combines multiple npm_link_package_direct targets into a single target.
New target provides DefaultInfo and DeclarationInfo but does not forward the
_LinkNpmPackageInfo of srcs.
For internal use only. Used for create `@npm//@scope` targets.
"""
_ATTRS = {
"srcs": attr.label_list(
doc = """The npm_link_package targets to forward.""",
providers = _npm_link_package_direct_lib.provides,
mandatory = True,
),
}
def _impl(ctx):
files_depsets = []
runfiles = ctx.runfiles()
for src in ctx.attr.srcs:
files_depsets.append(src[DefaultInfo].files)
runfiles = runfiles.merge(src[DefaultInfo].data_runfiles)
result = [
DefaultInfo(
files = depset(transitive = files_depsets),
runfiles = runfiles,
),
declaration_info(declarations = depset(), deps = ctx.attr.srcs),
]
return result
npm_linked_packages = rule(
doc = _DOC,
implementation = _impl,
attrs = _ATTRS,
provides = [DefaultInfo, DeclarationInfo],
)