add and call a rule to make a node_modules

This commit is contained in:
Brian Hicks 2023-05-01 14:56:57 -05:00
parent cbe8944b74
commit 0dca027c8e
No known key found for this signature in database
GPG Key ID: C4F324B9CAAB0D50
2 changed files with 41 additions and 0 deletions

7
BUCK
View File

@ -1,5 +1,6 @@
# A list of available rules and their signatures can be found here: https://buck2.build/docs/api/rules/
load("@prelude-nri//:elm.bzl", "elm_docs")
load("@prelude-nri//:node.bzl", "node_modules")
elm_docs(
name = "docs.json",
@ -12,3 +13,9 @@ filegroup(
srcs = glob(["src/**/*.elm"]),
visibility = ["//component-catalog:app"]
)
node_modules(
name = "node_modules",
package = "package.json",
package_lock = "package-lock.json",
)

34
prelude-nri/node.bzl Normal file
View File

@ -0,0 +1,34 @@
load("//node:toolchain.bzl", "NodeToolchainInfo")
load("@prelude//python:toolchain.bzl", "PythonToolchainInfo")
def _node_modules_impl(ctx: "context") -> [DefaultInfo.type]:
out = ctx.actions.declare_output("node_modules")
ctx.actions.run(
[
ctx.attrs._python_toolchain[PythonToolchainInfo].interpreter,
ctx.attrs._node_toolchain[NodeToolchainInfo].build_node_modules[DefaultInfo].default_outputs,
out.as_output(),
"--package", ctx.attrs.package,
"--package-lock", ctx.attrs.package_lock,
],
category = "npm",
)
return [DefaultInfo(default_output = out)]
node_modules = rule(
impl = _node_modules_impl,
attrs = {
"package": attrs.source(),
"package_lock": attrs.source(),
"_node_toolchain": attrs.toolchain_dep(
default="toolchains//:node",
providers=[NodeToolchainInfo]
),
"_python_toolchain": attrs.toolchain_dep(
default="toolchains//:python",
providers=[PythonToolchainInfo]
),
}
)