blob: 1db0cbc9ce999e2d0ad6a44109bc191bf3f5ae55 [file] [log] [blame] [edit]
"""Module extensions for local and remote java repositories"""
load(":local_java_repository.bzl", "local_java_repository")
load(":remote_java_repository.bzl", "remote_java_repository")
visibility(["//java"])
def _java_repository_impl(mctx):
for mod in mctx.modules:
if not mod.is_root:
fail(
"""This module extension may only be used in the root module. {name}
must set `dev_dependency` = True on it's usage of this extension,
if {name} can be dependency of other modules.""".format(name = mod.name),
)
for local in mod.tags.local:
local_java_repository(
local.name,
java_home = local.java_home,
version = local.version,
build_file = local.build_file,
build_file_content = local.build_file_content,
)
for remote in mod.tags.remote:
remote_java_repository(
remote.name,
remote.version,
target_compatible_with = remote.target_compatible_with,
prefix = remote.prefix,
remote_file_urls = remote.remote_file_urls,
remote_file_integrity = remote.remote_file_integrity,
sha256 = remote.sha256,
strip_prefix = remote.strip_prefix,
urls = remote.urls,
)
_local = tag_class(attrs = {
"name": attr.string(mandatory = True),
"build_file": attr.label(default = None),
"build_file_content": attr.string(default = ""),
"java_home": attr.string(default = ""),
"version": attr.string(default = ""),
})
_remote = tag_class(attrs = {
"name": attr.string(mandatory = True),
"version": attr.string(mandatory = True),
"urls": attr.string_list(mandatory = True),
"prefix": attr.string(default = ""),
"remote_file_urls": attr.string_list_dict(default = {}),
"remote_file_integrity": attr.string_dict(default = {}),
"sha256": attr.string(default = ""),
"strip_prefix": attr.string(default = ""),
"target_compatible_with": attr.string_list(default = []),
})
java_repository = module_extension(
_java_repository_impl,
tag_classes = {
"local": _local,
"remote": _remote,
},
)