2021-11-08 14:40:36 +00:00
# Aspect's Bazel helpers library
2021-11-08 14:20:26 +00:00
2022-05-23 13:11:46 +00:00
Base Starlark libraries and basic Bazel rules which are useful for constructing rulesets and BUILD files.
This module depends on [bazel-skylib ](https://github.com/bazelbuild/bazel-skylib ).
2022-05-24 17:31:27 +00:00
In theory all these utilities could be upstreamed to bazel-skylib, but the declared scope of that project
is narrow and it's very difficult to get anyone's attention to review PRs there.
2021-11-08 14:20:26 +00:00
2022-06-06 18:19:37 +00:00
bazel-lib is just a part of what Aspect provides:
2022-05-16 23:16:16 +00:00
2022-06-06 18:19:37 +00:00
- _Need help?_ This ruleset has support provided by https://aspect.dev.
- See our other Bazel rules: https://github.com/aspect-build
## Installation
Installation instructions are included on each release:
< https: / / github . com / aspect-build / bazel-lib / releases >
2023-02-28 14:15:06 +00:00
To use a commit rather than a release, you can point at any SHA of the repo.
For example to use commit `abc123` :
1. Replace `url = "https://github.com/aspect-build/bazel-lib/releases/download/v0.1.0/bazel-lib-v0.1.0.tar.gz"`
with a GitHub-provided source archive like
`url = "https://github.com/aspect-build/bazel-lib/archive/abc123.tar.gz"`
1. Replace `strip_prefix = "bazel-lib-0.1.0"` with `strip_prefix = "bazel-lib-abc123"`
1. Update the `sha256` . The easiest way to do this is to comment out the line, then Bazel will
print a message with the correct value.
> Note that GitHub source archives don't have a strong guarantee on the sha256 stability, see
> <https://github.blog/2023-02-21-update-on-the-future-stability-of-source-code-archives-and-hashes>
2022-06-06 18:19:37 +00:00
# Public API
2022-04-20 18:36:33 +00:00
2022-05-23 13:11:46 +00:00
## Copying files
- [copy_directory ](docs/copy_directory.md ) Copies directories to another package.
- [copy_file ](docs/copy_file.md ) Copies files to another package.
- [copy_to_bin ](docs/copy_to_bin.md ) Copies a source file to output tree at the same workspace-relative path.
- [copy_to_directory ](docs/copy_to_directory.md ) Copies and arranges files and directories into a new directory.
- [write_source_files ](docs/write_source_files.md ) Write to one or more files or folders in the source tree. Stamp out tests that ensure the sources exist and are up to date.
## Transforming files
- [jq ](docs/jq.md ) A toolchain and custom rule for running [jq ](https://stedolan.github.io/jq/ ), a tool that is "like sed for json".
- [yq ](docs/yq.md ) A toolchain and custom rule for running [yq ](https://github.com/mikefarah/yq ), a "YAML, JSON and XML processor".
## Manipulating paths
2022-06-29 20:14:26 +00:00
- [directory_path ](docs/directory_path.md ) Provide a label to reference some path within a directory, via DirectoryPathInfo.
2022-05-23 13:11:46 +00:00
- [output_files ](docs/output_files.md ) Forwards a subset of the files (via the DefaultInfo provider) from a given target's DefaultInfo or OutputGroupInfo.
## Writing rules
2023-10-05 19:33:13 +00:00
- [expand_make_vars ](docs/expand_make_vars.md ) Perform make variable and location substitions in strings..
- [expand_template ](docs/expand_template.md ) Substitute templates with make variables, location resolves, stamp variables, and arbitrary strings.
2022-05-23 13:11:46 +00:00
- [paths ](docs/paths.md ) Useful path resolution methods.
- [transitions ](docs/transitions.md ) Transition sources to a provided platform.
2023-09-21 17:12:47 +00:00
- [lists ](docs/lists.md ) Functional-style helpers for working with list data structures.
2022-05-23 13:11:46 +00:00
- [utils ](docs/utils.md ) Various utils for labels and globs.
- [params_file ](docs/params_file.md ) Generate encoded params file from a list of arguments.
- [repo_utils ](docs/repo_utils.md ) Useful methods for repository rule implementations.
- [run_binary ](docs/run_binary.md ) Like skylib's run_binary but adds directory output support.
2022-09-12 23:00:19 +00:00
- [stamping ](docs/stamping.md ) Support version stamping in custom rules.
2022-11-26 05:59:05 +00:00
- [base64 ](docs/base64.md ) Starlark Base64 encoder & decoder.
2022-05-23 13:11:46 +00:00
## Generating documentation
- [docs ](docs/docs.md ) Rules for generating docs and stamping tests to ensure they are up to date.