angular/aio/tools/examples/BUILD.bazel

125 lines
3 KiB
Text

load("//tools:defaults.bzl", "nodejs_binary")
load("@build_bazel_rules_nodejs//:index.bzl", "js_library")
load("@npm//@bazel/jasmine:index.bzl", "jasmine_node_test")
load("//aio/content/examples:examples.bzl", "EXAMPLES")
load("//:packages.bzl", "AIO_EXAMPLE_PACKAGES", "to_package_label")
package(default_visibility = ["//visibility:public"])
exports_files([
"run-example-e2e.mjs",
])
js_library(
name = "example-boilerplate-lib",
srcs = [
"constants.mjs",
"example-boilerplate.mjs",
"example-boilerplate-cli.mjs",
],
deps = [
"//aio/tools/examples/shared",
"@npm//canonical-path",
"@npm//fs-extra",
"@npm//ignore",
"@npm//shelljs",
"@npm//yargs",
],
)
nodejs_binary(
name = "example-boilerplate",
data = [":example-boilerplate-lib"],
entry_point = "example-boilerplate-cli.js",
)
jasmine_node_test(
name = "example-boilerplate-test",
srcs = ["example-boilerplate.spec.mjs"],
deps = [":example-boilerplate-lib"],
)
js_library(
name = "create-example-lib",
srcs = [
"constants.mjs",
"create-example.mjs",
"create-example-cli.mjs",
] + glob(["shared/**"]),
deps = [
"@npm//@bazel/buildozer",
"@npm//canonical-path",
"@npm//fs-extra",
"@npm//ignore",
"@npm//shelljs",
"@npm//yargs",
],
)
nodejs_binary(
name = "create-example",
data = [":create-example-lib"],
entry_point = "create-example-cli.mjs",
)
jasmine_node_test(
name = "create-example-test",
srcs = ["create-example.spec.mjs"],
deps = [":create-example-lib"],
)
js_library(
name = "example-sandbox",
srcs = ["example-sandbox.mjs"],
deps = [
"@npm//cjson",
"@npm//fs-extra",
"@npm//globby",
],
)
js_library(
name = "run-example-e2e",
srcs = [
"run-example-e2e.mjs",
],
deps = [
":example-sandbox",
"@npm//@bazel/runfiles",
"@npm//canonical-path",
"@npm//cross-spawn",
"@npm//fs-extra",
"@npm//get-port",
"@npm//globby",
"@npm//shelljs",
"@npm//tree-kill",
"@npm//yargs",
],
)
LOCAL_PACKAGE_DEPS = [to_package_label(dep) for dep in AIO_EXAMPLE_PACKAGES]
LOCAL_PACKAGE_ARGS = ["--localPackage=%s#$(rootpath %s)" % (
dep,
to_package_label(dep),
) for dep in AIO_EXAMPLE_PACKAGES]
[nodejs_binary(
name = "create-example-playground-%s" % example,
args = select({
# Hardcode package names/paths in args
"//aio:aio_local_deps": LOCAL_PACKAGE_ARGS,
"//conditions:default": [],
}) + ["--example=%s" % example],
data = [
":example-sandbox",
"@aio_example_deps//:node_modules_files",
"@npm//yargs",
"//aio/content/examples/%s" % example,
] + select({
"//aio:aio_local_deps": LOCAL_PACKAGE_DEPS,
"//conditions:default": [],
}),
entry_point = "create-example-playground.mjs",
tags = ["manual"],
) for example in EXAMPLES]