Skip to content

Commit

Permalink
Change j2cl_maven_import_external macro to a rule in preparation for …
Browse files Browse the repository at this point in the history
…bzlmod migration.

PiperOrigin-RevId: 721952962
  • Loading branch information
mollyibot authored and copybara-github committed Feb 1, 2025
1 parent 7c5ba0b commit b0deeba
Showing 1 changed file with 45 additions and 30 deletions.
75 changes: 45 additions & 30 deletions build_defs/internal_do_not_use/j2cl_repo.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,29 @@ _PASS_PROPS = (
"visibility",
"exports",
"deps",
"tags",
)

def _j2cl_import_external(repository_ctx):
"""Implementation of `j2cl_import_external` rule."""
_j2cl_import_external_common(
repository_ctx,
repository_ctx.attr.artifact_urls,
repository_ctx.attr.additional_rule_attrs | {"tags": repository_ctx.attr.tags},
)

def _j2cl_maven_import_external(repository_ctx):
"""Implementation of `j2cl_maven_import_external` rule."""
coordinates = _decode_maven_coordinates(repository_ctx.attr.artifact, default_packaging = "jar")
artifact_urls = _convert_coordinates_to_urls(coordinates, repository_ctx.attr.server_urls)
additional_attrs = dict(repository_ctx.attr.additional_rule_attrs)
additional_attrs["tags"] = repository_ctx.attr.tags + [
"maven_coordinates=" + repository_ctx.attr.artifact,
]

_j2cl_import_external_common(repository_ctx, artifact_urls, additional_attrs)


def _j2cl_import_external_common(repository_ctx, artifact_urls, additional_attrs):
lines = [
"load('@com_google_j2cl//build_defs:rules.bzl', 'j2cl_library', 'j2cl_import')",
"",
Expand All @@ -34,7 +51,7 @@ def _j2cl_import_external(repository_ctx):
jar_name = jar + ".jar"

repository_ctx.download(
repository_ctx.attr.artifact_urls,
artifact_urls,
output = jar_name,
sha256 = repository_ctx.attr.artifact_sha256,
)
Expand All @@ -51,7 +68,7 @@ def _j2cl_import_external(repository_ctx):

else:
repository_ctx.download_and_extract(
repository_ctx.attr.artifact_urls,
artifact_urls,
sha256 = repository_ctx.attr.artifact_sha256,
)

Expand All @@ -76,7 +93,6 @@ def _j2cl_import_external(repository_ctx):
prop = prop[:-1]
lines.append(" %s = %s," % (prop, repr(value)))

additional_attrs = repository_ctx.attr.additional_rule_attrs
for attr_key in additional_attrs:
lines.append(" %s = %s," % (attr_key, additional_attrs[attr_key]))

Expand Down Expand Up @@ -137,38 +153,37 @@ def _concat_with_needed_slash(server_url, url_suffix):
else:
return server_url + "/" + url_suffix

_COMMON_ATTRS = {
"licenses": attr.string_list(default = ["none"]),
"annotation_only": attr.bool(default = False),
"artifact_sha256": attr.string(),
"additional_rule_attrs": attr.string_dict(),
"deps": attr.string_list(),
"runtime_deps": attr.string_list(),
"testonly_": attr.bool(),
"exports": attr.string_list(),
"default_visibility": attr.string_list(default = ["//visibility:public"]),
}

j2cl_import_external = repository_rule(
attrs = {
"licenses": attr.string_list(default = ["none"]),
attrs = _COMMON_ATTRS | {
"artifact_urls": attr.string_list(
mandatory = True,
allow_empty = False,
),
"annotation_only": attr.bool(default = False),
"artifact_sha256": attr.string(),
"additional_rule_attrs": attr.string_dict(),
"deps": attr.string_list(),
"runtime_deps": attr.string_list(),
"testonly_": attr.bool(),
"exports": attr.string_list(),
"default_visibility": attr.string_list(default = ["//visibility:public"]),
},
implementation = _j2cl_import_external,
)

def j2cl_maven_import_external(
artifact,
server_urls,
annotation_only = False,
**kwargs):
coordinates = _decode_maven_coordinates(artifact, default_packaging = "jar")
srcjar_urls = _convert_coordinates_to_urls(coordinates, server_urls)
tags = kwargs.pop("tags", [])
tags.append("maven_coordinates=" + artifact)

j2cl_import_external(
artifact_urls = srcjar_urls,
tags = tags,
annotation_only = annotation_only,
**kwargs
)
j2cl_maven_import_external = repository_rule(
attrs = _COMMON_ATTRS | {
"artifact": attr.string(
mandatory = True,
),
"server_urls": attr.string_list(
mandatory = True,
allow_empty = False,
),
},
implementation = _j2cl_maven_import_external,
)

0 comments on commit b0deeba

Please sign in to comment.