blob: a6ca0a1ae28e75fea52dcbc86284089d831edcf2 [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 Schrader175a93c2023-02-19 13:13:40 -080039 "//:node_modules/@angular/animations",
Emily Markova7b786402024-01-24 20:05:24 -080040 "//:node_modules/@angular/service-worker",
Philipp Schrader89342e52023-03-03 20:47:21 -080041 "//scouting/www/driver_ranking",
42 "//scouting/www/entry",
43 "//scouting/www/match_list",
44 "//scouting/www/notes",
Emily Markovafaecfe12023-07-01 12:40:03 -070045 "//scouting/www/pit_scouting",
Philipp Schradere2e27ff2024-02-25 22:08:55 -080046 "//scouting/www/scan",
Philipp Schrader89342e52023-03-03 20:47:21 -080047 "//scouting/www/shift_schedule",
48 "//scouting/www/view",
Alex Perryb3168082022-01-22 13:36:13 -080049 ],
50)
51
Philipp Schrader175a93c2023-02-19 13:13:40 -080052assemble_static_files(
Philipp Schrader577befe2022-03-15 00:00:49 -070053 name = "static_files",
Philipp Schrader175a93c2023-02-19 13:13:40 -080054 app_files = ":app",
55 pictures = [
Emily Markovadcadcb62024-02-03 13:07:17 -080056 "//third_party/y2024/field:pictures",
Emily Markova7b786402024-01-24 20:05:24 -080057 ":ngsw-worker.js",
58 ":ngsw.json",
Philipp Schrader577befe2022-03-15 00:00:49 -070059 ],
Philipp Schrader175a93c2023-02-19 13:13:40 -080060 replace_prefixes = {
61 "prod": "",
62 "dev": "",
Emily Markovadcadcb62024-02-03 13:07:17 -080063 "third_party/y2024": "pictures",
Philipp Schrader175a93c2023-02-19 13:13:40 -080064 },
Austin Schuhf737d472023-07-29 17:35:59 -070065 tags = [
66 "no-remote-cache",
67 ],
Philipp Schrader684a8e82022-02-25 17:39:28 -080068 visibility = ["//visibility:public"],
Alex Perryb3168082022-01-22 13:36:13 -080069)
70
Philipp Schrader175a93c2023-02-19 13:13:40 -080071copy_file(
72 name = "app_common_css",
73 src = "common.css",
74 out = "app/common.css",
Philipp Schrader72beced2022-03-07 05:29:52 -080075 visibility = ["//scouting/www:__subpackages__"],
76)
Emily Markova7b786402024-01-24 20:05:24 -080077
78angular_service_worker.ngsw_config_binary(
79 name = "ngsw_config_binary",
80)
81
82js_binary(
83 name = "ngsw_config_wrapper",
84 data = [
85 ":ngsw_config_binary",
86 ],
87 entry_point = "ngsw_config_wrapper.js",
88)
89
90js_run_binary(
91 name = "ngsw_config",
92 srcs = [
93 "manifest.json",
94 "ngsw-config.json",
95 ":app",
96 ":ngsw_config_binary",
97 ],
98 outs = [
99 "ngsw.json",
100 ],
101 args = [
102 "$(rootpath :ngsw_config_binary)",
103 "$(rootpath :ngsw.json)",
104 "$(rootpath :prod)",
105 "$(rootpath ngsw-config.json)",
106 ],
107 tool = ":ngsw_config_wrapper",
108)