intellij/internal/intellij_repo/intellij_repo.bzl (62 lines of code) (raw):
load(":intellij_repo_libs.bzl", "intellij_repo_libs")
load(":intellij_repo_plugins.bzl", "intellij_repo_plugins")
_ROOT = """\
load("@rules_java//java:defs.bzl", "java_binary")
filegroup(
name = "runfiles",
srcs = glob(
include = ["**"],
exclude = ["*.bazel"],
),
visibility = ["//visibility:public"],
)
java_binary(
name = "binary",
main_class = "com.intellij.idea.Main",
runtime_deps = [
"//lib",
"//lib:runtime",
],
visibility = ["//visibility:public"],
)
"""
def _intellij_repo_impl(rctx):
rctx.download_and_extract(
url = "{url}/com/jetbrains/intellij/{type}/{stype}/{version}/{stype}-{version}.zip".format(
url = rctx.attr.intellij_repo_url,
type = rctx.attr.type,
stype = rctx.attr.subtype,
version = rctx.attr.version,
),
sha256 = rctx.attr.sha256,
)
intellij_repo_libs(rctx)
intellij_repo_plugins(rctx)
rctx.file(
"BUILD.bazel",
content = _ROOT,
)
_intellij_repo = repository_rule(
implementation = _intellij_repo_impl,
attrs = {
"version": attr.string(mandatory = True),
"type": attr.string(mandatory = True),
"subtype": attr.string(mandatory = True),
"sha256": attr.string(),
"plugins": attr.string_dict(default = {}),
"default_plugins": attr.string_list(default = []),
"intellij_repo_url": attr.string(default = "https://cache-redirector.jetbrains.com/intellij-repository/releases"),
"plugins_repo_url": attr.string(default = "https://cache-redirector.jetbrains.com/plugins.jetbrains.com/maven"),
"rules_intellij_repo": attr.string(),
"rules_kotlin_repo": attr.string(),
"compiler_repo_template": attr.label(doc = "compiler repository build file template"),
},
local = True,
)
def intellij_repo(rules_intellij_repo, rules_kotlin_repo, **kwargs):
_intellij_repo(
rules_intellij_repo = rules_intellij_repo,
rules_kotlin_repo = rules_kotlin_repo,
compiler_repo_template = "@%s//src/main/starlark/core/repositories:BUILD.com_github_jetbrains_kotlin.bazel" % rules_kotlin_repo,
**kwargs
)