/
drivers.bzl
33 lines (28 loc) · 1.11 KB
/
drivers.bzl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def _symlink_if_available(repository_ctx, driver_name):
driver = repository_ctx.which(driver_name)
if driver:
repository_ctx.symlink(driver, driver_name)
else:
repository_ctx.file(driver_name, "")
return "\n".join([
"bool_setting(name = \"use_%s\", build_setting_default = %s)" % (driver_name, driver != None),
"",
"exports_files([\"%s\"])" % driver_name,
"",
"""js_library(name = "%s-js", data = [":%s"])""" % (driver_name, driver_name),
"",
])
def _local_drivers_impl(repository_ctx):
contents = [
"load(\"@bazel_skylib//rules:common_settings.bzl\", \"bool_setting\")",
"load(\"@aspect_rules_js//js:defs.bzl\", \"js_library\")",
"",
"package(default_visibility = [\"//visibility:public\"])",
_symlink_if_available(repository_ctx, "chromedriver"),
_symlink_if_available(repository_ctx, "msedgedriver"),
_symlink_if_available(repository_ctx, "geckodriver"),
]
repository_ctx.file("BUILD.bazel", "\n".join(contents))
local_drivers = repository_rule(
_local_drivers_impl,
)