blob: a4c38479ee4c934db7ebe8e52400e8bf56b02101 [file]
module(
name = "pre-commit",
version = "1.0.10",
compatibility_level = 1,
)
bazel_dep(name = "platforms", version = "0.0.11")
bazel_dep(name = "bazel_skylib", version = "1.7.1")
bazel_dep(name = "rules_python", version = "1.6.0")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_diff", version = "1.0.0")
bazel_dep(name = "toolchain_utils", version = "1.2.0")
bazel_dep(name = "download_utils", version = "1.0.1")
bazel_dep(name = "ape", version = "1.0.1")
# TODO: Remove this in favour of `rules_python//uv:lock.bzl` when released
bazel_dep(name = "rules_uv", version = "0.56.0", dev_dependency = True)
bazel_dep(name = "buildifier_prebuilt", version = "8.0.1", dev_dependency = True)
bazel_dep(name = "hermetic_cc_toolchain", version = "4.0.1", dev_dependency = True)
single_version_override(
module_name = "hermetic_cc_toolchain",
patch_strip = 1,
patches = ["patches/hermetic_cc_toolchain/bazel-9.patch"],
)
zig = use_extension("@hermetic_cc_toolchain//toolchain:ext.bzl", "toolchains", dev_dependency = True)
use_repo(zig, zig = "zig_sdk")
register_toolchains(
"@zig//toolchain/...",
dev_dependency = True,
)
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
# Ensure there is a `pip` hub for each Python version
# The project performs a `select` to grab the correct packages for the executing Python
# This is important to provide Python package aliases downstream such as `//pre-commit:pkg`
[
(
python.toolchain(
# TODO: remove this when `ignore_root_user_error` is hermetic
# https://github.com/bazelbuild/rules_python/issues/2016
ignore_root_user_error = True,
python_version = version,
),
pip.parse(
experimental_index_url = "https://pypi.org/simple",
hub_name = "pre-commit",
python_version = version,
requirements_lock = "//pre-commit/requirements:lock.txt",
),
pip.parse(
experimental_index_url = "https://pypi.org/simple",
hub_name = "pre-commit-hook",
python_version = version,
requirements_by_platform = {
"//pre-commit/hook/requirements:lock.txt": "linux_*,osx_*,windows_*",
},
),
pip.parse(
experimental_index_url = "https://pypi.org/simple",
hub_name = "pre-commit-config",
python_version = version,
requirements_lock = "//pre-commit/config/requirements:lock.txt",
),
)
for version in ("3.10", "3.11", "3.12", "3.13")
]
python.defaults(python_version = "3.13")
use_repo(
pip,
config = "pre-commit-config",
hook = "pre-commit-hook",
pkg = "pre-commit",
)
download_file = use_repo_rule("@download_utils//download/file:defs.bzl", "download_file")
download_archive = use_repo_rule("@download_utils//download/archive:defs.bzl", "download_archive")
# Bazelisk binaries
[
download_file(
name = "bazelisk-{}".format(name),
executable = True,
integrity = integrity,
output = "bazelisk.exe" if ".exe" in suffix else "bazelisk",
urls = ["https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-{}".format(suffix)],
)
for name, suffix, integrity in (
("amd64-linux", "linux-amd64", "sha256-/Y/f9BihdYiHUg+kLafmrjmu/HiM9ef3u422k00nn8Q="),
("arm64-linux", "linux-arm64", "sha256-TI2WbkCsLE78x/Glpczu8sCi8WuVfnkfp6hnzOMej8s="),
("amd64-macos", "darwin-amd64", "sha256-CvAZ7rZC+nB0RBnQKqMt9V5ueghBBdSfsmgBpmCqVtM="),
("arm64-macos", "darwin-arm64", "sha256-sT3YnG7NkJRMo1OfWixxWhj2m3RYh4xHGpAqjkgs60s="),
("amd64-windows", "windows-amd64.exe", "sha256-ZBo9/r1xdwNnX5EpF3NcRLRc9jAL/fuSRTfzz7/83ZI="),
("arm64-windows", "bazelisk-windows-arm64.exe", "sha256-4FYwZnOIMzRNHbFatBB9L2L4nkphZJ1SF/Bw0l8NyNc="),
)
]
# Ruff binaries
[
download_archive(
name = "ruff-{}".format(name),
integrity = integrity,
strip_prefix = "ruff-{}".format(triplet) if ext != ".zip" else "",
urls = ["https://github.com/astral-sh/ruff/releases/download/0.9.7/ruff-{}{}".format(triplet, ext)],
)
for name, triplet, ext, integrity in (
("amd64-linux", "x86_64-unknown-linux-musl", ".tar.gz", "sha256-8LfHpa5EZzCsERkEpQTLlnicwcgrmWa1W+3Yim0+wHc="),
("arm64-linux", "aarch64-unknown-linux-musl", ".tar.gz", "sha256-uUrZS8DPFKEqcl/PI4PtBHtTcGj0szvwgV6LrzXm7Fw="),
("amd64-macos", "x86_64-apple-darwin", ".tar.gz", "sha256-Kg/RLNZtIKiCypcBWe82HV85e5OKWrnXYZ3sDxUVL1M="),
("arm64-macos", "aarch64-apple-darwin", ".tar.gz", "sha256-8UQ35xOZ4UMCvfXOkQ49+avJoiP+D/XWsC6wg8Ofows="),
("amd64-windows", "x86_64-pc-windows-msvc", ".zip", "sha256-I2xp7VEKMwL0C14Owc3gzHU1FGzTdljm0xaMhelOMIo="),
("arm64-windows", "aarch64-pc-windows-msvc", ".zip", "sha256-ckodh0IeEldZ6bfbqxak0QNIks5BgKqvYePrvn5nr6I="),
)
]