blob: 46742e3c17dcce2330de706ab8323a34fbdbf169 [file] [log] [blame]
Philipp Schrader175a93c2023-02-19 13:13:40 -08001load("@aspect_bazel_lib//lib:copy_file.bzl", "copy_file")
Emily Markova7b786402024-01-24 20:05:24 -08002load("@aspect_rules_js//js:defs.bzl", "js_binary", "js_run_binary")
3load("@npm//:@angular/service-worker/package_json.bzl", angular_service_worker = "bin")
Philipp Schrader175a93c2023-02-19 13:13:40 -08004load("@npm//:defs.bzl", "npm_link_all_packages")
5load("//tools/build_rules:js.bzl", "ng_application")
Emily Markova7b786402024-01-24 20:05:24 -08006load(":defs.bzl", "assemble_service_worker_files", "assemble_static_files")
Alex Perryb3168082022-01-22 13:36:13 -08007
Philipp Schrader175a93c2023-02-19 13:13:40 -08008npm_link_all_packages(name = "node_modules")
9
Emily Markova7b786402024-01-24 20:05:24 -080010assemble_service_worker_files(
11 name = "service_worker_files",
12 outs = [
13 "ngsw-worker.js",
14 ],
15)
16
Philipp Schradere2e27ff2024-02-25 22:08:55 -080017OPENCV_VERSION = "4.9.0"
18
19copy_file(
20 name = "opencv.js",
21 src = "@opencv_wasm//file",
22 out = "assets/opencv_{}/opencv.js".format(OPENCV_VERSION),
23)
24
Philipp Schrader175a93c2023-02-19 13:13:40 -080025ng_application(
Alex Perryb3168082022-01-22 13:36:13 -080026 name = "app",
Philipp Schradere2e27ff2024-02-25 22:08:55 -080027 assets = [
Emily Markova7b786402024-01-24 20:05:24 -080028 "manifest.json",
Philipp Schradere2e27ff2024-02-25 22:08:55 -080029 ":opencv.js",
30 ],
Philipp Schrader175a93c2023-02-19 13:13:40 -080031 extra_srcs = [
32 "app/common.css",
33 ],
34 html_assets = [
35 "favicon.ico",
Emily Markova7b786402024-01-24 20:05:24 -080036 "assets/971_144.png",
Philipp Schrader175a93c2023-02-19 13:13:40 -080037 ],
Alex Perryb3168082022-01-22 13:36:13 -080038 deps = [
Philipp Schradere5d13942024-03-17 15:44:35 -070039 ":node_modules",
Alex Perryb3168082022-01-22 13:36:13 -080040 ],
41)
42
Philipp Schrader175a93c2023-02-19 13:13:40 -080043assemble_static_files(
Philipp Schrader577befe2022-03-15 00:00:49 -070044 name = "static_files",
Philipp Schrader175a93c2023-02-19 13:13:40 -080045 app_files = ":app",
46 pictures = [
Emily Markovadcadcb62024-02-03 13:07:17 -080047 "//third_party/y2024/field:pictures",
Emily Markova7b786402024-01-24 20:05:24 -080048 ":ngsw-worker.js",
49 ":ngsw.json",
Philipp Schrader577befe2022-03-15 00:00:49 -070050 ],
Philipp Schrader175a93c2023-02-19 13:13:40 -080051 replace_prefixes = {
52 "prod": "",
53 "dev": "",
Emily Markovadcadcb62024-02-03 13:07:17 -080054 "third_party/y2024": "pictures",
Philipp Schrader175a93c2023-02-19 13:13:40 -080055 },
Austin Schuhf737d472023-07-29 17:35:59 -070056 tags = [
57 "no-remote-cache",
58 ],
Philipp Schrader684a8e82022-02-25 17:39:28 -080059 visibility = ["//visibility:public"],
Alex Perryb3168082022-01-22 13:36:13 -080060)
61
Philipp Schrader175a93c2023-02-19 13:13:40 -080062copy_file(
63 name = "app_common_css",
64 src = "common.css",
65 out = "app/common.css",
Philipp Schrader72beced2022-03-07 05:29:52 -080066 visibility = ["//scouting/www:__subpackages__"],
67)
Emily Markova7b786402024-01-24 20:05:24 -080068
69angular_service_worker.ngsw_config_binary(
70 name = "ngsw_config_binary",
71)
72
73js_binary(
74 name = "ngsw_config_wrapper",
75 data = [
76 ":ngsw_config_binary",
77 ],
78 entry_point = "ngsw_config_wrapper.js",
79)
80
81js_run_binary(
82 name = "ngsw_config",
83 srcs = [
84 "manifest.json",
85 "ngsw-config.json",
86 ":app",
87 ":ngsw_config_binary",
88 ],
89 outs = [
90 "ngsw.json",
91 ],
92 args = [
93 "$(rootpath :ngsw_config_binary)",
94 "$(rootpath :ngsw.json)",
95 "$(rootpath :prod)",
96 "$(rootpath ngsw-config.json)",
97 ],
98 tool = ":ngsw_config_wrapper",
99)