intellij/internal/intellij_defs/intellij_defs.bzl (69 lines of code) (raw):

load(":intellij_kt_toolchain.bzl", "intellij_kt_toolchain") load(":intellij_indexing.bzl", "intellij_indexing") _DEFS = """\ load("@{rules_intellij_repo}//intellij/internal/intellij_toolchain:intellij_toolchain.bzl", "intellij_toolchain") load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS") constraint_value( name = "constraint_value", constraint_setting = "@{rules_intellij_repo}//:intellij_constraint_setting", visibility = ["//visibility:public"], ) platform( name = "platform", constraint_values = [ ":constraint_value" ] + HOST_CONSTRAINTS, visibility = ["//visibility:public"], ) intellij_toolchain( name = "intellij_toolchain", intellij_repo = "{intellij_repo}", plugins = {{ "indexing": "//indexing", }}, ) """ _TOOLCHAINS_DEFS = """\ load("@io_bazel_rules_kotlin//kotlin/internal:defs.bzl", _KT_TOOLCHAIN_TYPE = "TOOLCHAIN_TYPE") load("@local_config_platform//:constraints.bzl", "HOST_CONSTRAINTS") toolchain( name = "kt_toolchain", toolchain_type = _KT_TOOLCHAIN_TYPE, toolchain = "//kt_toolchain", exec_compatible_with = [ "//:constraint_value" ] + HOST_CONSTRAINTS, visibility = ["//visibility:public"], ) toolchain( name = "toolchain", toolchain_type = "@{rules_intellij_repo}//intellij:intellij_toolchain_type", toolchain = "//:intellij_toolchain", exec_compatible_with = [ "//:constraint_value" ] + HOST_CONSTRAINTS, visibility = ["//visibility:public"], ) """ def _intellij_defs_impl(rctx): intellij_kt_toolchain(rctx) intellij_indexing(rctx) subs = { "kotlin_version": rctx.attr.kotlin_version, "rules_intellij_repo": rctx.attr.rules_intellij_repo, "rules_kotlin_repo": rctx.attr.rules_kotlin_repo, "intellij_repo": rctx.attr.intellij_repo, } rctx.file( "BUILD.bazel", content = _DEFS.format(**subs), ) rctx.file( "toolchains/BUILD.bazel", content = _TOOLCHAINS_DEFS.format(**subs), ) intellij_defs = repository_rule( implementation = _intellij_defs_impl, attrs = { "kotlin_version": attr.string(mandatory = True), "intellij_repo": attr.string(mandatory = True), "rules_intellij_repo": attr.string(mandatory = True), "rules_kotlin_repo": attr.string(mandatory = True), "kt_compiler_repo": attr.string(mandatory = True), }, local = True, )