diff --git a/BUILD b/BUILD index 635f9538..10df9b4a 100644 --- a/BUILD +++ b/BUILD @@ -1,4 +1,5 @@ load("@rules_license//rules:license.bzl", "license") +load("//rules:common_settings.bzl", "bool_flag") load("//:bzl_library.bzl", "bzl_library") package( @@ -95,3 +96,16 @@ filegroup( "//toolchains/unittest:distribution", ] + glob(["*.bzl"]), ) + +bool_flag( + name = "extract_docs", + build_setting_default = False, + visibility = ["//visibility:public"], +) + +config_setting( + name = "extract_docs_flag", + flag_values = { + ":extract_docs": "true", + }, +) diff --git a/bzl_library.bzl b/bzl_library.bzl index d6dbf817..c59a59e4 100644 --- a/bzl_library.bzl +++ b/bzl_library.bzl @@ -23,7 +23,7 @@ load( StarlarkLibraryInfo = _StarlarkLibraryInfo -def bzl_library(name, **kwargs): +def bzl_library(name, srcs = [], deps = [], **kwargs): """Wrapper for bzl_library. Args: @@ -38,9 +38,22 @@ def bzl_library(name, **kwargs): _ = kwargs.pop("target_compatible_with", None) _bzl_library( name = name, + srcs = srcs, + deps = deps, compatible_with = [], exec_compatible_with = [], features = [], target_compatible_with = [], **kwargs ) + enable_doc_extract = select({ + Label("//:extract_docs_flag"): hasattr(native, "starlark_doc_extract"), + "//conditions:default": False, + }) + if enable_doc_extract: + for i, src in enumerate(srcs): + native.starlark_doc_extract( + name = "{}.doc_extract{}".format(name, i if i > 0 else ""), + src = src, + deps = deps, + )