Allow .scl files in bzl_library (#450)

See a0cd355347
This commit is contained in:
Alexandre Rostovtsev 2023-05-31 14:58:11 -04:00 committed by GitHub
parent 0a34b7edf6
commit 12dd004ffa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 98 additions and 4 deletions

View File

@ -46,11 +46,11 @@ bzl_library = rule(
implementation = _bzl_library_impl, implementation = _bzl_library_impl,
attrs = { attrs = {
"srcs": attr.label_list( "srcs": attr.label_list(
allow_files = [".bzl"], allow_files = [".bzl", ".scl"],
doc = "List of `.bzl` files that are processed to create this target.", doc = "List of `.bzl` and `.scl` files that are processed to create this target.",
), ),
"deps": attr.label_list( "deps": attr.label_list(
allow_files = [".bzl"], allow_files = [".bzl", ".scl"],
providers = [ providers = [
[StarlarkLibraryInfo], [StarlarkLibraryInfo],
], ],
@ -58,7 +58,7 @@ bzl_library = rule(
Starlark files listed in `srcs`.""", Starlark files listed in `srcs`.""",
), ),
}, },
doc = """Creates a logical collection of Starlark .bzl files. doc = """Creates a logical collection of Starlark .bzl and .scl files.
Example: Example:
Suppose your project has the following structure: Suppose your project has the following structure:

View File

@ -14,6 +14,12 @@ stardoc_with_diff_test(
out_label = "//docs:build_test_doc.md", out_label = "//docs:build_test_doc.md",
) )
stardoc_with_diff_test(
name = "bzl_library",
bzl_library_target = "//:bzl_library",
out_label = "//docs:bzl_library.md",
)
stardoc_with_diff_test( stardoc_with_diff_test(
name = "collections", name = "collections",
bzl_library_target = "//lib:collections", bzl_library_target = "//lib:collections",

88
docs/bzl_library.md Executable file
View File

@ -0,0 +1,88 @@
<!-- Generated with Stardoc: http://skydoc.bazel.build -->
Skylib module containing a library rule for aggregating rules files.
<a id="bzl_library"></a>
## bzl_library
<pre>
bzl_library(<a href="#bzl_library-name">name</a>, <a href="#bzl_library-deps">deps</a>, <a href="#bzl_library-srcs">srcs</a>)
</pre>
Creates a logical collection of Starlark .bzl and .scl files.
Example:
Suppose your project has the following structure:
```
[workspace]/
WORKSPACE
BUILD
checkstyle/
BUILD
checkstyle.bzl
lua/
BUILD
lua.bzl
luarocks.bzl
```
In this case, you can have `bzl_library` targets in `checkstyle/BUILD` and
`lua/BUILD`:
`checkstyle/BUILD`:
```python
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
bzl_library(
name = "checkstyle-rules",
srcs = ["checkstyle.bzl"],
)
```
`lua/BUILD`:
```python
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
bzl_library(
name = "lua-rules",
srcs = [
"lua.bzl",
"luarocks.bzl",
],
)
```
**ATTRIBUTES**
| Name | Description | Type | Mandatory | Default |
| :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="bzl_library-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
| <a id="bzl_library-deps"></a>deps | List of other <code>bzl_library</code> targets that are required by the Starlark files listed in <code>srcs</code>. | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
| <a id="bzl_library-srcs"></a>srcs | List of <code>.bzl</code> and <code>.scl</code> files that are processed to create this target. | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
<a id="StarlarkLibraryInfo"></a>
## StarlarkLibraryInfo
<pre>
StarlarkLibraryInfo(<a href="#StarlarkLibraryInfo-srcs">srcs</a>, <a href="#StarlarkLibraryInfo-transitive_srcs">transitive_srcs</a>)
</pre>
Information on contained Starlark rules.
**FIELDS**
| Name | Description |
| :------------- | :------------- |
| <a id="StarlarkLibraryInfo-srcs"></a>srcs | Top level rules files. |
| <a id="StarlarkLibraryInfo-transitive_srcs"></a>transitive_srcs | Transitive closure of rules files required for interpretation of the srcs |