blob: c73f93a0e39c21a28e7b1a60c7ed8bcc6e011737 [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
Philipp Schraderad2a6fb2024-03-20 20:51:36 -070010exports_files([
11 "_static_files/authorize/index.html",
12])
13
Emily Markova7b786402024-01-24 20:05:24 -080014assemble_service_worker_files(
15 name = "service_worker_files",
16 outs = [
17 "ngsw-worker.js",
18 ],
19)
20
Philipp Schradere2e27ff2024-02-25 22:08:55 -080021OPENCV_VERSION = "4.9.0"
22
23copy_file(
24 name = "opencv.js",
25 src = "@opencv_wasm//file",
26 out = "assets/opencv_{}/opencv.js".format(OPENCV_VERSION),
27)
28
Philipp Schrader175a93c2023-02-19 13:13:40 -080029ng_application(
Alex Perryb3168082022-01-22 13:36:13 -080030 name = "app",
Philipp Schradere2e27ff2024-02-25 22:08:55 -080031 assets = [
Emily Markova7b786402024-01-24 20:05:24 -080032 "manifest.json",
Philipp Schradere2e27ff2024-02-25 22:08:55 -080033 ":opencv.js",
34 ],
Philipp Schrader175a93c2023-02-19 13:13:40 -080035 extra_srcs = [
36 "app/common.css",
37 ],
38 html_assets = [
39 "favicon.ico",
Emily Markova7b786402024-01-24 20:05:24 -080040 "assets/971_144.png",
Philipp Schrader175a93c2023-02-19 13:13:40 -080041 ],
Alex Perryb3168082022-01-22 13:36:13 -080042 deps = [
Philipp Schradere5d13942024-03-17 15:44:35 -070043 ":node_modules",
Alex Perryb3168082022-01-22 13:36:13 -080044 ],
45)
46
Philipp Schrader175a93c2023-02-19 13:13:40 -080047assemble_static_files(
Philipp Schrader577befe2022-03-15 00:00:49 -070048 name = "static_files",
Philipp Schraderffb651f2024-03-23 14:14:34 -070049 srcs = [
Philipp Schraderad2a6fb2024-03-20 20:51:36 -070050 "_static_files/authorize/index.html",
Emily Markova7b786402024-01-24 20:05:24 -080051 ":ngsw.json",
Philipp Schraderffb651f2024-03-23 14:14:34 -070052 ":ngsw-worker.js",
53 "//third_party/y2024/field:pictures",
Philipp Schrader577befe2022-03-15 00:00:49 -070054 ],
Philipp Schraderffb651f2024-03-23 14:14:34 -070055 app_files = ":app",
Philipp Schrader175a93c2023-02-19 13:13:40 -080056 replace_prefixes = {
Philipp Schraderad2a6fb2024-03-20 20:51:36 -070057 "_static_files": "",
Philipp Schrader175a93c2023-02-19 13:13:40 -080058 "prod": "",
59 "dev": "",
Emily Markovadcadcb62024-02-03 13:07:17 -080060 "third_party/y2024": "pictures",
Philipp Schrader175a93c2023-02-19 13:13:40 -080061 },
Austin Schuhf737d472023-07-29 17:35:59 -070062 tags = [
63 "no-remote-cache",
64 ],
Philipp Schrader684a8e82022-02-25 17:39:28 -080065 visibility = ["//visibility:public"],
Alex Perryb3168082022-01-22 13:36:13 -080066)
67
Philipp Schrader175a93c2023-02-19 13:13:40 -080068copy_file(
69 name = "app_common_css",
70 src = "common.css",
71 out = "app/common.css",
Philipp Schrader72beced2022-03-07 05:29:52 -080072 visibility = ["//scouting/www:__subpackages__"],
73)
Emily Markova7b786402024-01-24 20:05:24 -080074
75angular_service_worker.ngsw_config_binary(
76 name = "ngsw_config_binary",
77)
78
79js_binary(
80 name = "ngsw_config_wrapper",
81 data = [
82 ":ngsw_config_binary",
83 ],
84 entry_point = "ngsw_config_wrapper.js",
85)
86
87js_run_binary(
88 name = "ngsw_config",
89 srcs = [
90 "manifest.json",
91 "ngsw-config.json",
92 ":app",
93 ":ngsw_config_binary",
94 ],
95 outs = [
96 "ngsw.json",
97 ],
98 args = [
99 "$(rootpath :ngsw_config_binary)",
100 "$(rootpath :ngsw.json)",
101 "$(rootpath :prod)",
102 "$(rootpath ngsw-config.json)",
103 ],
104 tool = ":ngsw_config_wrapper",
105)