blob: 57dc7424a877a9c9aef6281d2c182bbaa396ca95 [file] [log] [blame]
module(
name = "pre-commit-hooks",
version = "1.3.1",
compatibility_level = 1,
)
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "pre-commit", version = "1.0.9")
bazel_dep(name = "buildifier_prebuilt", version = "8.0.0")
bazel_dep(name = "download_utils", version = "1.2.0")
bazel_dep(name = "toolchain_utils", version = "1.2.0")
bazel_dep(name = "rules_shellcheck", version = "0.3.3")
bazel_dep(name = "rules_python", version = "1.0.0")
# 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 = "hermetic_cc_toolchain", version = "3.1.0", dev_dependency = True)
python = use_extension("@rules_python//python/extensions:python.bzl", "python", dev_dependency = True)
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 = "3.13",
)
download = use_extension("@download_utils//download/template:defs.bzl", "download_template")
# Ruff binaries
download.archive(
name = "pre-commit-hooks-ruff-{cpu}-{os}",
srcs = ["ruff{executable.extension}"],
lock = "//ruff:lock.json",
strip_prefix = "ruff-{rust.triplet}",
substitutions = {
"version": [
"0.9.7",
],
"triplet": [
"amd64-linux-musl",
"arm64-linux-musl",
"amd64-windows-msvc",
"arm64-windows-msvc",
"amd64-macos-darwin",
"arm64-macos-darwin",
],
},
uploads = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/ruff/{version}/{rust.archive.basename}",
],
urls = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/ruff/{version}/{rust.archive.basename}",
"https://github.com/astral-sh/ruff/releases/download/{version}/ruff-{rust.archive.basename}",
],
)
# `shfmt` binaries
download.substitution(
key = "shfmt.os",
match = "{os}",
select = {
"macos": "darwin",
"//conditions:default": "{os}",
},
)
download.file(
name = "pre-commit-hooks-shfmt-{cpu}-{os}",
executable = True,
lock = "//shfmt:lock.json",
output = "shfmt{executable.extension}",
substitutions = {
"version": [
"3.10.0",
],
"triplet": [
"amd64-linux-musl",
"arm64-linux-musl",
"amd64-windows-msvc",
# TODO: https://github.com/mvdan/sh/issues/1077
# "arm64-windows-msvc",
"amd64-macos-darwin",
"arm64-macos-darwin",
],
},
uploads = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/shfmt/{version}/shfmt-{cpu}-{os}{executable.extension}",
],
urls = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/shfmt/{version}/shfmt-{cpu}-{os}{executable.extension}",
"https://github.com/mvdan/sh/releases/download/v{version}/shfmt_v{version}_{shfmt.os}_{cpu}{executable.extension}",
],
)
use_repo(download, "pre-commit-hooks-ruff-amd64-linux", "pre-commit-hooks-ruff-amd64-macos", "pre-commit-hooks-ruff-amd64-windows", "pre-commit-hooks-ruff-arm64-linux", "pre-commit-hooks-ruff-arm64-macos", "pre-commit-hooks-ruff-arm64-windows", "pre-commit-hooks-shfmt-amd64-linux", "pre-commit-hooks-shfmt-amd64-macos", "pre-commit-hooks-shfmt-amd64-windows", "pre-commit-hooks-shfmt-arm64-linux", "pre-commit-hooks-shfmt-arm64-macos", "pre-commit-hooks-yamlfmt-amd64-linux", "pre-commit-hooks-yamlfmt-amd64-macos", "pre-commit-hooks-yamlfmt-amd64-windows", "pre-commit-hooks-yamlfmt-arm64-linux", "pre-commit-hooks-yamlfmt-arm64-macos", "pre-commit-hooks-yamlfmt-arm64-windows")
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
# `clang-format`
# 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`
[
(
pip.parse(
experimental_index_url = "https://pypi.org/simple",
hub_name = "clang-format-%s" % version,
python_version = version,
requirements_lock = "//clang-format/requirements:lock.txt",
),
use_repo(
pip,
"clang-format-%s" % version,
),
)
# Keep this in sync with `//pre-commit/python:versions.bzl`
# TODO: load from `//pre-commit/python:version.bzl` when possible
for version in ("3.10", "3.11", "3.12", "3.13")
]
# Yamlfmt binaries
download.substitution(
key = "yamlfmt.os",
match = "{os}",
select = {
"macos": "Darwin",
"windows": "Windows",
"linux": "Linux",
},
)
download.substitution(
key = "yamlfmt.cpu",
match = "{cpu}",
select = {
"amd64": "x86_64",
"//conditions:default": "{cpu}",
},
)
download.archive(
name = "pre-commit-hooks-yamlfmt-{cpu}-{os}",
srcs = ["yamlfmt{executable.extension}"],
lock = "//yamlfmt:lock.json",
substitutions = {
"version": [
"0.17.2",
],
"triplet": [
"amd64-linux-musl",
"arm64-linux-musl",
"amd64-windows-msvc",
"arm64-windows-msvc",
"amd64-macos-darwin",
"arm64-macos-darwin",
],
},
uploads = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/yamlfmt/{version}/yamlfmt-{cpu}-{os}.tar.gz",
],
urls = [
"https://gitlab.arm.com/api/v4/projects/bazel%2Fpre-commit-hooks/packages/generic/yamlfmt/{version}/yamlfmt-{cpu}-{os}.tar.gz",
"https://github.com/google/yamlfmt/releases/download/v{version}/yamlfmt_{version}_{yamlfmt.os}_{yamlfmt.cpu}.tar.gz",
],
)