blob: a0f7d34f3f4e798663f9219205f8da78185f3780 [file] [log] [blame]
David Ostrovskyae9c2012019-01-09 22:34:36 +01001load("//tools/bzl:genrule2.bzl", "genrule2")
David Ostrovsky6b6dfcb2020-06-27 10:27:25 +02002load("@npm//@bazel/rollup:index.bzl", "rollup_bundle")
Viktar Donichdbe8aa82017-06-23 16:04:04 -07003
Dmitrii Filippov9095f302021-07-05 16:42:51 +02004def polygerrit_bundle(name, srcs, outs, entry_point, app_name):
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +01005 """Build .zip bundle from source code
Viktar Donichdbe8aa82017-06-23 16:04:04 -07006
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +01007 Args:
8 name: rule name
9 srcs: source files
10 outs: array with a single item - the output file name
Tao Zhou0de9ec52020-06-25 09:40:20 +020011 entry_point: application js entry-point
Dmitrii Filippov9095f302021-07-05 16:42:51 +020012 app_name: defines the application name. Bundled js code is added to .zip
13 archive with this name.
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010014 """
Viktar Donichdbe8aa82017-06-23 16:04:04 -070015
Dmitrii Filippovc2aac212020-03-11 13:33:06 +010016 native.filegroup(
17 name = app_name + "-full-src",
18 srcs = srcs + [
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010019 "@ui_npm//:node_modules",
20 ],
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010021 )
22
23 rollup_bundle(
24 name = app_name + "-bundle-js",
Dmitrii Filippovc2aac212020-03-11 13:33:06 +010025 srcs = [app_name + "-full-src"],
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010026 config_file = ":rollup.config.js",
Tao Zhou0de9ec52020-06-25 09:40:20 +020027 entry_point = entry_point,
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010028 rollup_bin = "//tools/node_tools:rollup-bin",
Martin Waitzf047bbd2021-12-16 21:39:14 +010029 silent = True,
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010030 sourcemap = "hidden",
31 deps = [
32 "@tools_npm//rollup-plugin-node-resolve",
33 ],
34 )
35
Ben Rohlfsde5c02e2022-02-01 12:42:12 +010036 rollup_bundle(
37 name = "syntax-worker",
38 srcs = [app_name + "-full-src"],
39 config_file = ":rollup.config.js",
40 entry_point = "_pg_ts_out/workers/syntax-worker.js",
41 rollup_bin = "//tools/node_tools:rollup-bin",
David Ostrovsky70ae8c22022-02-22 06:33:20 +010042 silent = True,
Ben Rohlfsde5c02e2022-02-01 12:42:12 +010043 sourcemap = "hidden",
44 deps = [
45 "@tools_npm//rollup-plugin-node-resolve",
46 ],
47 )
48
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020049 native.filegroup(
50 name = name + "_app_sources",
51 srcs = [
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010052 app_name + "-bundle-js.js",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020053 ],
54 )
Viktar Donichdbe8aa82017-06-23 16:04:04 -070055
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020056 native.filegroup(
57 name = name + "_css_sources",
58 srcs = native.glob(["styles/**/*.css"]),
59 )
Viktar Donichdbe8aa82017-06-23 16:04:04 -070060
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020061 native.filegroup(
Ben Rohlfsde5c02e2022-02-01 12:42:12 +010062 name = name + "_worker_sources",
63 srcs = [
64 "syntax-worker.js",
65 ],
66 )
67
68 native.filegroup(
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020069 name = name + "_top_sources",
70 srcs = [
71 "favicon.ico",
72 ],
73 )
Viktar Donichdbe8aa82017-06-23 16:04:04 -070074
Dmitrii Filippovd97c8432020-01-15 00:49:56 +010075 # Preserve bower_components directory in the final directory layout to
76 # avoid plugins break
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020077 genrule2(
78 name = name,
79 srcs = [
80 name + "_app_sources",
81 name + "_css_sources",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020082 name + "_top_sources",
Ben Rohlfsde5c02e2022-02-01 12:42:12 +010083 name + "_worker_sources",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020084 "//lib/fonts:robotofonts",
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010085 "//lib/js:highlightjs__files",
86 "@ui_npm//:node_modules/@webcomponents/webcomponentsjs/webcomponents-lite.js",
Paladox nonee3747cee2021-08-03 21:36:24 +000087 "@ui_npm//:node_modules/@webcomponents/webcomponentsjs/webcomponents-lite.js.map",
Dmitrii Filippovba3dc7a2021-06-28 14:42:15 +020088 "@ui_npm//:node_modules/resemblejs/resemble.js",
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010089 "@ui_npm//@polymer/font-roboto-local",
90 "@ui_npm//:node_modules/@polymer/font-roboto-local/package.json",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020091 ],
92 outs = outs,
93 cmd = " && ".join([
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010094 "FONT_DIR=$$(dirname $(location @ui_npm//:node_modules/@polymer/font-roboto-local/package.json))/fonts",
Ben Rohlfsde5c02e2022-02-01 12:42:12 +010095 "mkdir -p $$TMP/polygerrit_ui/{workers,styles/themes,fonts/{roboto,robotomono},bower_components/{highlightjs,webcomponentsjs,resemblejs},elements}",
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +010096 "for f in $(locations " + name + "_app_sources); do ext=$${f##*.}; cp -p $$f $$TMP/polygerrit_ui/elements/" + app_name + ".$$ext; done",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +020097 "cp $(locations //lib/fonts:robotofonts) $$TMP/polygerrit_ui/fonts/",
98 "for f in $(locations " + name + "_top_sources); do cp $$f $$TMP/polygerrit_ui/; done",
99 "for f in $(locations " + name + "_css_sources); do cp $$f $$TMP/polygerrit_ui/styles; done",
Ben Rohlfsde5c02e2022-02-01 12:42:12 +0100100 "for f in $(locations " + name + "_worker_sources); do cp $$f $$TMP/polygerrit_ui/workers; done",
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +0100101 "for f in $(locations //lib/js:highlightjs__files); do cp $$f $$TMP/polygerrit_ui/bower_components/highlightjs/ ; done",
102 "cp $(location @ui_npm//:node_modules/@webcomponents/webcomponentsjs/webcomponents-lite.js) $$TMP/polygerrit_ui/bower_components/webcomponentsjs/webcomponents-lite.js",
Paladox nonee3747cee2021-08-03 21:36:24 +0000103 "cp $(location @ui_npm//:node_modules/@webcomponents/webcomponentsjs/webcomponents-lite.js.map) $$TMP/polygerrit_ui/bower_components/webcomponentsjs/webcomponents-lite.js.map",
Dmitrii Filippovba3dc7a2021-06-28 14:42:15 +0200104 "cp $(location @ui_npm//:node_modules/resemblejs/resemble.js) $$TMP/polygerrit_ui/bower_components/resemblejs/resemble.js",
Dmitrii Filippovfbdc89d2020-01-20 19:38:06 +0100105 "cp $$FONT_DIR/roboto/*.ttf $$TMP/polygerrit_ui/fonts/roboto/",
106 "cp $$FONT_DIR/robotomono/*.ttf $$TMP/polygerrit_ui/fonts/robotomono/",
Han-Wen Nienhuysa667b4c2018-07-10 11:51:36 +0200107 "cd $$TMP",
108 "find . -exec touch -t 198001010000 '{}' ';'",
109 "zip -qr $$ROOT/$@ *",
110 ]),
111 )