| "Module extensions for use with bzlmod" |
| |
| load( |
| "@aspect_bazel_lib//lib:repositories.bzl", |
| "DEFAULT_BATS_CORE_VERSION", |
| "DEFAULT_BATS_REPOSITORY", |
| "DEFAULT_COPY_DIRECTORY_REPOSITORY", |
| "DEFAULT_COPY_TO_DIRECTORY_REPOSITORY", |
| "DEFAULT_COREUTILS_REPOSITORY", |
| "DEFAULT_COREUTILS_VERSION", |
| "DEFAULT_EXPAND_TEMPLATE_REPOSITORY", |
| "DEFAULT_JQ_REPOSITORY", |
| "DEFAULT_JQ_VERSION", |
| "DEFAULT_TAR_REPOSITORY", |
| "DEFAULT_YQ_REPOSITORY", |
| "DEFAULT_YQ_VERSION", |
| "DEFAULT_ZSTD_REPOSITORY", |
| "register_bats_toolchains", |
| "register_copy_directory_toolchains", |
| "register_copy_to_directory_toolchains", |
| "register_coreutils_toolchains", |
| "register_expand_template_toolchains", |
| "register_jq_toolchains", |
| "register_tar_toolchains", |
| "register_yq_toolchains", |
| "register_zstd_toolchains", |
| ) |
| load("//lib/private:extension_utils.bzl", "extension_utils") |
| load("//lib/private:host_repo.bzl", "host_repo") |
| |
| def _host_extension_impl(mctx): |
| create_host_repo = False |
| for module in mctx.modules: |
| if len(module.tags.host) > 0: |
| create_host_repo = True |
| |
| if create_host_repo: |
| host_repo(name = "aspect_bazel_lib_host") |
| |
| host = module_extension( |
| implementation = _host_extension_impl, |
| tag_classes = { |
| "host": tag_class(attrs = {}), |
| }, |
| ) |
| |
| def _toolchains_extension_impl(mctx): |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.copy_directory, |
| toolchain_name = "copy_directory", |
| toolchain_repos_fn = lambda name, version: register_copy_directory_toolchains(name = name, register = False), |
| get_version_fn = lambda attr: None, |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.copy_to_directory, |
| toolchain_name = "copy_to_directory", |
| toolchain_repos_fn = lambda name, version: register_copy_to_directory_toolchains(name = name, register = False), |
| get_version_fn = lambda attr: None, |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.jq, |
| toolchain_name = "jq", |
| toolchain_repos_fn = lambda name, version: register_jq_toolchains(name = name, version = version, register = False), |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.yq, |
| toolchain_name = "yq", |
| toolchain_repos_fn = lambda name, version: register_yq_toolchains(name = name, version = version, register = False), |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.coreutils, |
| toolchain_name = "coreutils", |
| toolchain_repos_fn = lambda name, version: register_coreutils_toolchains(name = name, version = version, register = False), |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.tar, |
| toolchain_name = "tar", |
| default_repository = DEFAULT_TAR_REPOSITORY, |
| toolchain_repos_fn = lambda name, version: register_tar_toolchains(name = name, register = False), |
| get_version_fn = lambda attr: None, |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.zstd, |
| toolchain_name = "zstd", |
| default_repository = DEFAULT_ZSTD_REPOSITORY, |
| toolchain_repos_fn = lambda name, version: register_zstd_toolchains(name = name, register = False), |
| get_version_fn = lambda attr: None, |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.expand_template, |
| toolchain_name = "expand_template", |
| toolchain_repos_fn = lambda name, version: register_expand_template_toolchains(name = name, register = False), |
| get_version_fn = lambda attr: None, |
| ) |
| |
| extension_utils.toolchain_repos_bfs( |
| mctx = mctx, |
| get_tag_fn = lambda tags: tags.bats, |
| toolchain_name = "bats", |
| default_repository = DEFAULT_BATS_REPOSITORY, |
| toolchain_repos_fn = lambda name, version: register_bats_toolchains(name = name, core_version = version, register = False), |
| get_version_fn = lambda attr: attr.core_version, |
| ) |
| |
| toolchains = module_extension( |
| implementation = _toolchains_extension_impl, |
| tag_classes = { |
| "copy_directory": tag_class(attrs = {"name": attr.string(default = DEFAULT_COPY_DIRECTORY_REPOSITORY)}), |
| "copy_to_directory": tag_class(attrs = {"name": attr.string(default = DEFAULT_COPY_TO_DIRECTORY_REPOSITORY)}), |
| "jq": tag_class(attrs = {"name": attr.string(default = DEFAULT_JQ_REPOSITORY), "version": attr.string(default = DEFAULT_JQ_VERSION)}), |
| "yq": tag_class(attrs = {"name": attr.string(default = DEFAULT_YQ_REPOSITORY), "version": attr.string(default = DEFAULT_YQ_VERSION)}), |
| "coreutils": tag_class(attrs = {"name": attr.string(default = DEFAULT_COREUTILS_REPOSITORY), "version": attr.string(default = DEFAULT_COREUTILS_VERSION)}), |
| "tar": tag_class(attrs = {"name": attr.string(default = DEFAULT_TAR_REPOSITORY)}), |
| "zstd": tag_class(attrs = {"name": attr.string(default = DEFAULT_ZSTD_REPOSITORY)}), |
| "expand_template": tag_class(attrs = {"name": attr.string(default = DEFAULT_EXPAND_TEMPLATE_REPOSITORY)}), |
| "bats": tag_class(attrs = { |
| "name": attr.string(default = DEFAULT_BATS_REPOSITORY), |
| "core_version": attr.string(default = DEFAULT_BATS_CORE_VERSION), |
| }), |
| }, |
| ) |