-
Notifications
You must be signed in to change notification settings - Fork 206
/
compiler.bzl
70 lines (64 loc) · 2.67 KB
/
compiler.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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
def _kotlin_compiler_impl(repository_ctx):
"""Creates the kotlinc repository."""
attr = repository_ctx.attr
repository_ctx.download_and_extract(
attr.urls,
sha256 = attr.sha256,
stripPrefix = "kotlinc",
)
repository_ctx.file(
"WORKSPACE",
content = """workspace(name = "%s")""" % attr.name,
)
repository_ctx.template(
"BUILD.bazel",
attr._template,
executable = False,
)
repository_ctx.template(
"capabilities.bzl",
_get_capability_template(attr.compiler_version, attr._capabilities_templates),
executable = False,
)
def _get_capability_template(compiler_version, templates):
for ver, template in zip(_CAPABILITIES_TEMPLATES.keys(), templates):
if compiler_version.startswith(ver):
return template
# After latest version
if compiler_version > _CAPABILITIES_TEMPLATES.keys()[-1]:
templates[-1]
# Legacy
return templates[0]
_CAPABILITIES_TEMPLATES = {
"legacy": "//src/main/starlark/core/repositories/kotlin:capabilities_legacy.bzl.com_github_jetbrains_kotlin.bazel", # keep first
"1.4": "//src/main/starlark/core/repositories/kotlin:capabilities_1.4.bzl.com_github_jetbrains_kotlin.bazel",
"1.5": "//src/main/starlark/core/repositories/kotlin:capabilities_1.5.bzl.com_github_jetbrains_kotlin.bazel",
"1.6": "//src/main/starlark/core/repositories/kotlin:capabilities_1.6.bzl.com_github_jetbrains_kotlin.bazel",
"1.7": "//src/main/starlark/core/repositories/kotlin:capabilities_1.7.bzl.com_github_jetbrains_kotlin.bazel",
"1.8": "//src/main/starlark/core/repositories/kotlin:capabilities_1.8.bzl.com_github_jetbrains_kotlin.bazel",
"1.9": "//src/main/starlark/core/repositories/kotlin:capabilities_1.9.bzl.com_github_jetbrains_kotlin.bazel",
"2.0": "//src/main/starlark/core/repositories/kotlin:capabilities_2.0.bzl.com_github_jetbrains_kotlin.bazel",
}
kotlin_compiler_repository = repository_rule(
implementation = _kotlin_compiler_impl,
attrs = {
"urls": attr.string_list(
doc = "A list of urls for the kotlin compiler",
mandatory = True,
),
"sha256": attr.string(
doc = "sha256 of the compiler archive",
),
"compiler_version": attr.string(
doc = "compiler version",
),
"_template": attr.label(
doc = "repository build file template",
default = ":BUILD.com_github_jetbrains_kotlin.bazel",
),
"_capabilities_templates": attr.label_list(
doc = "compiler capabilities file templates",
default = _CAPABILITIES_TEMPLATES.values(),
),
},
)