add rule to copy mathjax from node_modules

This commit is contained in:
Damien Elmes 2020-11-15 20:22:28 +10:00
parent afc7bdf642
commit 8a80ffe53a
10 changed files with 86 additions and 27 deletions

View file

@ -304,7 +304,7 @@ class CardLayout(QDialog):
jsinc = [
"js/vendor/jquery.js",
"js/vendor/browsersel.js",
"js/vendor/mathjax/conf.js",
"js/mathjax.js",
"js/vendor/mathjax/tex-chtml.js",
"js/reviewer.js",
]

View file

@ -26,16 +26,12 @@ filegroup(
output_group = "es5_sources",
)
filegroup(
name = "vendor",
srcs = glob(["vendor/**"]),
)
filegroup(
name = "js",
srcs = [
"aqt_es5",
"vendor",
"mathjax.js",
"//qt/aqt/data/web/js/vendor",
],
visibility = ["//qt:__subpackages__"],
)

5
qt/aqt/data/web/js/vendor/BUILD.bazel vendored Normal file
View file

@ -0,0 +1,5 @@
filegroup(
name = "vendor",
srcs = glob(["**"]) + ["//qt/aqt/data/web/js/vendor/mathjax"],
visibility = ["//qt:__subpackages__"],
)

View file

@ -1,2 +0,0 @@
*
!conf.js

View file

@ -0,0 +1,6 @@
load("//ts:mathjax.bzl", "copy_mathjax")
copy_mathjax(
name = "mathjax",
visibility = ["//visibility:public"],
)

View file

@ -114,7 +114,7 @@ class Previewer(QDialog):
jsinc = [
"js/vendor/jquery.js",
"js/vendor/browsersel.js",
"js/vendor/mathjax/conf.js",
"js/mathjax.js",
"js/vendor/mathjax/tex-chtml.js",
"js/reviewer.js",
]

View file

@ -155,7 +155,7 @@ class Reviewer:
js=[
"js/vendor/jquery.js",
"js/vendor/browsersel.js",
"js/vendor/mathjax/conf.js",
"js/mathjax.js",
"js/vendor/mathjax/tex-chtml.js",
"js/reviewer.js",
],

View file

@ -13,19 +13,3 @@ exports_files([
".eslintrc.js",
"licenses.json",
])
filegroup(
name = "mathjax",
srcs = glob(
include = glob([
'node_modules/mathjax/es5/tex-chtml.js',
'node_modules/mathjax/es5/input/tex/extensions/**/*',
'node_modules/mathjax/es5/output/chtml/fonts/woff-v2/**/*',
'node_modules/mathjax/es5/a11y/**/*',
'node_modules/mathjax/es5/sre/**/*',
]),
exclude = [
'node_modules/mathjax/es5/sre/mathmaps/mathmaps_ie.js',
],
),
)

70
ts/mathjax.bzl Normal file
View file

@ -0,0 +1,70 @@
"Rule to copy mathjax subset from node_modules to vendor folder."
_exclude = [
"mathmaps_ie.js",
]
_include = [
"es5/tex-chtml.js",
"es5/input/tex/extensions",
"es5/output/chtml/fonts/woff-v2",
"es5/a11y",
"es5/sre",
]
_unwanted_prefix = "external/npm/node_modules/mathjax/es5/"
def _copy_files(ctx, files):
cmds = []
inputs = []
outputs = []
for (src, dst) in files:
inputs.append(src)
dst = ctx.actions.declare_file(dst)
outputs.append(dst)
cmds.append("cp -f {} {}".format(src.path, dst.path))
shell_fname = ctx.label.name + "-cp.sh"
shell_file = ctx.actions.declare_file(shell_fname)
ctx.actions.write(
output = shell_file,
content = "#!/bin/bash\nset -e\n" + "\n".join(cmds),
is_executable = True,
)
ctx.actions.run(
inputs = inputs,
executable = "bash",
tools = [shell_file],
arguments = [shell_file.path],
outputs = outputs,
mnemonic = "CopyFile",
use_default_shell_env = True,
)
return [DefaultInfo(files = depset(outputs))]
def _copy_mathjax_impl(ctx):
wanted = []
for f in ctx.attr.mathjax.files.to_list():
path = f.path
want = True
for substr in _exclude:
if substr in path:
want = False
continue
if not want:
continue
for substr in _include:
if substr in path:
output = path.replace(_unwanted_prefix, "")
wanted.append((f, output))
return _copy_files(ctx, wanted)
copy_mathjax = rule(
implementation = _copy_mathjax_impl,
attrs = {
"mathjax": attr.label(default = "@npm//mathjax:mathjax__files"),
},
)