blob: ee0659b697d32f659c6d06434a2941d203e968c7 [file] [log] [blame]
load("@npm//@bazel/typescript:index.bzl", "ts_library")
load("//tools/build_rules:js.bzl", "rollup_bundle")
load("@npm//@babel/cli:index.bzl", "babel")
ts_library(
name = "app",
srcs = glob([
"*.ts",
]),
angular_assets = glob([
"*.ng.html",
"*.css",
]),
compiler = "//tools:tsc_wrapped_with_angular",
target_compatible_with = ["@platforms//cpu:x86_64"],
use_angular_plugin = True,
visibility = ["//visibility:public"],
deps = [
"//scouting/www/driver_ranking",
"//scouting/www/entry",
"//scouting/www/import_match_list",
"//scouting/www/match_list",
"//scouting/www/notes",
"//scouting/www/shift_schedule",
"//scouting/www/view",
"@npm//@angular/animations",
"@npm//@angular/common",
"@npm//@angular/core",
"@npm//@angular/platform-browser",
],
)
rollup_bundle(
name = "main_bundle",
entry_point = "main.ts",
deps = [
"app",
],
)
babel(
name = "main_bundle_compiled",
args = [
"$(execpath :main_bundle.min.js)",
"--no-babelrc",
"--source-maps",
"--minified",
"--no-comments",
"--plugins=@angular/compiler-cli/linker/babel",
"--out-dir",
"$(@D)",
],
data = [
":main_bundle.min.js",
"@npm//@angular/compiler-cli",
],
output_dir = True,
)
# The babel() rule above puts everything into a directory without telling bazel
# what's in the directory. That makes it annoying to work with from other
# rules. This genrule() here copies the one file in the directory we care about
# so that other rules have an easier time using the file.
genrule(
name = "main_bundle_file",
srcs = [":main_bundle_compiled"],
outs = ["main_bundle_file.js"],
cmd = "cp $(location :main_bundle_compiled)/main_bundle.min.js $(OUTS)",
)
py_binary(
name = "index_html_generator",
srcs = ["index_html_generator.py"],
)
genrule(
name = "generate_index_html",
srcs = [
"index.template.html",
"main_bundle_file.js",
],
outs = ["index.html"],
cmd = " ".join([
"$(location :index_html_generator)",
"--template $(location index.template.html)",
"--bundle $(location main_bundle_file.js)",
"--output $(location index.html)",
]),
tools = [
":index_html_generator",
],
)
# Create a copy of zone.js here so that we can have a predictable path to
# source it from on the webserver.
genrule(
name = "zonejs_copy",
srcs = [
"@npm//:node_modules/zone.js/dist/zone.min.js",
],
outs = [
"npm/node_modules/zone.js/dist/zone.min.js",
],
cmd = "cp $(SRCS) $(OUTS)",
)
genrule(
name = "field_pictures_copy",
srcs = ["//third_party/y2022/field:pictures"],
outs = [
"pictures/field/balls.jpeg",
"pictures/field/quadrants.jpeg",
"pictures/field/reversed_quadrants.jpeg",
"pictures/field/reversed_balls.jpeg",
],
cmd = "cp $(SRCS) $(@D)/pictures/field/",
)
filegroup(
name = "static_files",
srcs = [
"index.html",
":field_pictures_copy",
":main_bundle_file.js",
":zonejs_copy",
],
visibility = ["//visibility:public"],
)
filegroup(
name = "common_css",
srcs = ["common.css"],
visibility = ["//scouting/www:__subpackages__"],
)