-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
📦 Add Bazel extension to expose transitive dependencies via setup.bzl
We should provide a Bazel extension (setup.bzl
) in this module to simplify integration for downstream consumers and follow best practices for reusable Bazel modules.
🎯 Motivation
Currently, downstream projects that use score_docs_as_code
and its macros must also manually declare:
bazel_dep(name = "score_python_basics")
in their MODULE.bazel
, even though it’s only used indirectly by macros from this module.
This violates the principle of encapsulated, reusable modules and puts an unnecessary burden on consumers.
✅ Goals
- Provide a
setup.bzl
file with a public function (e.g.setup_dependencies(ctx)
) that:- Uses
ctx.use_repo()
to expose transitive repos likescore_python_basics
- Optionally sets up further repo-level initialization (e.g. venv, toolchains)
- Uses
- Document this extension usage in the module README
- Adapt examples and tests to use this new aproach
📐 Proposed Structure
setup/setup.bzl
def setup_dependencies(ctx):
ctx.use_repo(dependency = "score_python_basics", repo_name = "score_python_basics")
Usage in downstream MODULE.bazel
bazel_dep(name = "score_docs_as_code", version = "...")
use_extension("@score_docs_as_code//setup:setup.bzl", "setup")
setup.setup_dependencies()
📝 Additional Ideas
- Consider converting frequently-used macros (e.g.
define_docs_env
) into actual extensions usingtag_class
andmodule_extension
. - Possibly wrap setup of the Python venv and Sphinx-Needs dependencies into a more declarative Bazel extension API in the future.
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Review Issue Before Implementation