feat: expose PackageMetadataInfo
diff --git a/MODULE.bazel b/MODULE.bazel index 508b191..89cba41 100644 --- a/MODULE.bazel +++ b/MODULE.bazel
@@ -12,6 +12,7 @@ bazel_dep(name = "aspect_bazel_lib", version = "2.14.0") bazel_dep(name = "bazel_features", version = "1.9.0") bazel_dep(name = "bazel_skylib", version = "1.5.0") +bazel_dep(name = "package_metadata", version = "0.0.1") bazel_dep(name = "platforms", version = "0.0.5") bazel_dep(name = "rules_nodejs", version = "6.3.0")
diff --git a/npm/private/npm_import.bzl b/npm/private/npm_import.bzl index a9cc8bb..db2b609 100644 --- a/npm/private/npm_import.bzl +++ b/npm/private/npm_import.bzl
@@ -178,6 +178,7 @@ name = "{{}}/pkg_lc".format(store_target_name), src = ":{{}}/lc".format(store_target_name), package = "{package}", + metadata = "", version = "{version}", tags = ["manual"], ) @@ -344,6 +345,7 @@ name = "pkg", src = ":{package_src}", package = "{package}", + metadata = "", version = "{version}", visibility = ["//visibility:public"], ) @@ -532,6 +534,7 @@ } rctx_files["BUILD.bazel"].append(_JS_PACKAGE_TMPL.format( + metadata = None, package_src = package_src, package = rctx.attr.package, version = rctx.attr.version, @@ -781,6 +784,7 @@ ref_deps = starlark_codegen_utils.to_dict_attr(ref_deps, 1, quote_key = False), root_package = rctx.attr.root_package, transitive_closure_pattern = str(transitive_closure_pattern), + metadata = None, version = rctx.attr.version, package_store_name = package_store_name, package_store_root = utils.package_store_root,
diff --git a/npm/private/npm_package_info.bzl b/npm/private/npm_package_info.bzl index 7b2d799..43f2126 100644 --- a/npm/private/npm_package_info.bzl +++ b/npm/private/npm_package_info.bzl
@@ -7,5 +7,6 @@ "version": "version of this npm package", "src": "the sources of this npm package; either a tarball file, a TreeArtifact or a source directory", "npm_package_store_infos": "A depset of NpmPackageStoreInfo providers from npm dependencies of the package and the packages's transitive deps to use as direct dependencies when linking with npm_link_package", + "metadata": "TODO", }, )
diff --git a/npm/private/npm_package_internal.bzl b/npm/private/npm_package_internal.bzl index 30ab509..e625f73 100644 --- a/npm/private/npm_package_internal.bzl +++ b/npm/private/npm_package_internal.bzl
@@ -16,6 +16,7 @@ doc = """The package version.""", mandatory = True, ), + "metadata": attr.string(doc = "TODO"), } def _npm_package_internal_impl(ctx): @@ -34,6 +35,7 @@ version = ctx.attr.version, src = dst, npm_package_store_infos = depset(), + metadata = ctx.attr.metadata, ), ]
diff --git a/npm/private/npm_package_store.bzl b/npm/private/npm_package_store.bzl index 5c14c9c..f8e716d 100644 --- a/npm/private/npm_package_store.bzl +++ b/npm/private/npm_package_store.bzl
@@ -1,6 +1,7 @@ "npm_package_store rule" load("@aspect_bazel_lib//lib:copy_directory.bzl", "copy_directory_bin_action") +load("@package_metadata//:defs.bzl", "PackageMetadataInfo") # buildifier: disable=bzl-visibility load("//js/private:js_info.bzl", "JsInfo", "js_info") @@ -162,12 +163,14 @@ if NpmPackageInfo in ctx.attr.src: package = ctx.attr.package if ctx.attr.package else ctx.attr.src[NpmPackageInfo].package version = ctx.attr.version if ctx.attr.version else ctx.attr.src[NpmPackageInfo].version + elif JsInfo in ctx.attr.src: if not ctx.attr.package: msg = "Expected package to be specified in '{}' when src '{}' provides a JsInfo".format(ctx.label, ctx.attr.src[JsInfo].target) fail(msg) package = ctx.attr.package version = ctx.attr.version if ctx.attr.version else "0.0.0" + else: msg = "Expected src of '{}' to provide either NpmPackageInfo or JsInfo".format(ctx.label) fail(msg) @@ -426,6 +429,9 @@ transitive_files = transitive_files_depset, dev = ctx.attr.dev, ), + PackageMetadataInfo( + metadata = getattr(ctx.attr.src[NpmPackageInfo], "license", "") if ctx.attr.src else None, + ), ] if ctx.attr.src: