Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ common --enable_bzlmod

try-import user.bazelrc

# To update these lines, execute
# To update these lines, execute
# `bazel run @rules_bazel_integration_test//tools:update_deleted_packages`
build --deleted_packages=examples/check_glob,examples/optional_attributes
query --deleted_packages=examples/check_glob,examples/optional_attributes

# Enable the aspect
build --aspects=//shellcheck:shellcheck_aspect.bzl%shellcheck_aspect
build --output_groups=+shellcheck_checks
2 changes: 1 addition & 1 deletion .bazelversion
Original file line number Diff line number Diff line change
@@ -1 +1 @@
7.0.0
8.0.0
4 changes: 1 addition & 3 deletions BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@ filegroup(
"MODULE.bazel",
"README.md",
"WORKSPACE",
":def.bzl",
":deps.bzl",
"//internal:distribution",
"//shellcheck:distribution",
# Needed for BCR registry to run the pre-submit tests
"//examples:distribution",
],
Expand Down
8 changes: 5 additions & 3 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,13 @@ module(
compatibility_level = 1,
)

bazel_dep(name = "platforms", version = "0.0.8")
bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_shell", version = "0.6.1")

deps = use_extension("//internal:extensions.bzl", "shellcheck_dependencies")
shellcheck = use_extension("//shellcheck/internal:extensions.bzl", "shellcheck")
use_repo(
deps,
shellcheck,
"shellcheck_darwin_aarch64",
"shellcheck_darwin_x86_64",
"shellcheck_linux_aarch64",
Expand Down
20 changes: 5 additions & 15 deletions def.bzl
Original file line number Diff line number Diff line change
@@ -1,19 +1,9 @@
"""This file provides all user facing functions.
"""

load("//internal:rules.bzl", _shellcheck_test = "shellcheck_test")
load(
"//shellcheck:defs.bzl",
_shellcheck_test = "shellcheck_test",
)

def shellcheck_test(name, data, **kwargs):
"""shellcheck_test takes the files to be checked as 'data'

Args:
name: The name of the rule.
data: The list of files to be checked using shellcheck.
**kwargs: Forwarded kwargs to the underlying rule.
"""
kwargs.pop("expect_fail", True)
return _shellcheck_test(
name = name,
data = data,
**kwargs
)
shellcheck_test = _shellcheck_test
55 changes: 2 additions & 53 deletions deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -3,57 +3,6 @@
- OSX 64-bit
"""

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
load("//shellcheck/internal:extensions.bzl", _shellcheck_dependencies = "shellcheck_dependencies")

def _urls(arch, version):
archive_template_name = {
"darwin_aarch64": "shellcheck-{version}.{arch}.tar.xz",
"darwin_x86_64": "shellcheck-{version}.{arch}.tar.xz",
"linux_aarch64": "shellcheck-{version}.{arch}.tar.xz",
"linux_armv6hf": "shellcheck-{version}.{arch}.tar.xz",
"linux_x86_64": "shellcheck-{version}.{arch}.tar.xz",
"windows_x86_64": "shellcheck-{version}.zip",
}
url = "https://github.com/koalaman/shellcheck/releases/download/{version}/{archive}".format(
version = version,
archive = archive_template_name[arch].format(
version = version,
arch = arch.replace("_", ".", 1),
)
)

return [
url,
]

def shellcheck_dependencies():
version = "v0.11.0"
sha256 = {
"darwin_aarch64": "56affdd8de5527894dca6dc3d7e0a99a873b0f004d7aabc30ae407d3f48b0a79",
"darwin_x86_64": "3c89db4edcab7cf1c27bff178882e0f6f27f7afdf54e859fa041fca10febe4c6",
"linux_aarch64": "12b331c1d2db6b9eb13cfca64306b1b157a86eb69db83023e261eaa7e7c14588",
"linux_armv6hf": "8afc50b302d5feeac9381ea114d563f0150d061520042b254d6eb715797c8223",
"linux_x86_64": "8c3be12b05d5c177a04c29e3c78ce89ac86f1595681cab149b65b97c4e227198",
}

for arch, sha256 in sha256.items():
maybe(
http_archive,
name = "shellcheck_{arch}".format(arch = arch),
strip_prefix = "shellcheck-{version}".format(version = version),
build_file_content = """exports_files(["shellcheck"])
""",
sha256 = sha256,
urls = _urls(arch = arch, version = version),
)

# Special case, as it is a zip archive with no prefix to strip.
maybe(
http_archive,
name = "shellcheck_windows_x86_64",
build_file_content = """exports_files(["shellcheck"])
""",
sha256 = "8a4e35ab0b331c85d73567b12f2a444df187f483e5079ceffa6bda1faa2e740e",
urls = _urls(arch = "windows_x86_64", version = version),
)
shellcheck_dependencies = _shellcheck_dependencies
5 changes: 0 additions & 5 deletions internal/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,5 +0,0 @@
filegroup(
name = "distribution",
srcs = glob(["*"]),
visibility = ["//:__pkg__"],
)
13 changes: 0 additions & 13 deletions internal/extensions.bzl

This file was deleted.

1 change: 1 addition & 0 deletions internal/pkg/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
load("@rules_pkg//pkg:mappings.bzl", "pkg_files", "strip_prefix")
load("@rules_pkg//pkg:tar.bzl", "pkg_tar")
load("@rules_shell//shell:sh_binary.bzl", "sh_binary")
load("//:def.bzl", "shellcheck_test")

pkg_files(
Expand Down
56 changes: 0 additions & 56 deletions internal/rules.bzl

This file was deleted.

12 changes: 12 additions & 0 deletions shellcheck/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
filegroup(
name = "distribution",
srcs = [
"BUILD.bazel",
"defs.bzl",
"shellcheck_aspect.bzl",
"shellcheck_test.bzl",
"//shellcheck/internal:distribution",
"//shellcheck/settings:distribution",
],
visibility = ["//:__pkg__"],
)
13 changes: 13 additions & 0 deletions shellcheck/defs.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
"""# Shellcheck rules"""

load(
":shellcheck_aspect.bzl",
_shellcheck_aspect = "shellcheck_aspect",
)
load(
":shellcheck_test.bzl",
_shellcheck_test = "shellcheck_test",
)

shellcheck_test = _shellcheck_test
shellcheck_aspect = _shellcheck_aspect
5 changes: 5 additions & 0 deletions shellcheck/internal/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
filegroup(
name = "distribution",
srcs = glob(["*"]),
visibility = ["//shellcheck:__pkg__"],
)
67 changes: 67 additions & 0 deletions shellcheck/internal/extensions.bzl
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
"""Provides shellcheck dependencies on all supported platforms:
- Linux 64-bit and ARM64
- OSX 64-bit
"""

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

def _urls(arch, version):
archive_template_name = {
"darwin_aarch64": "shellcheck-{version}.{arch}.tar.xz",
"darwin_x86_64": "shellcheck-{version}.{arch}.tar.xz",
"linux_aarch64": "shellcheck-{version}.{arch}.tar.xz",
"linux_armv6hf": "shellcheck-{version}.{arch}.tar.xz",
"linux_x86_64": "shellcheck-{version}.{arch}.tar.xz",
"windows_x86_64": "shellcheck-{version}.zip",
}
url = "https://github.com/koalaman/shellcheck/releases/download/{version}/{archive}".format(
version = version,
archive = archive_template_name[arch].format(
version = version,
arch = arch.replace("_", ".", 1),
),
)

return [
url,
]

def shellcheck_dependencies():
"""Define shellcheck repositories"""
version = "v0.11.0"
sha256 = {
"darwin_aarch64": "56affdd8de5527894dca6dc3d7e0a99a873b0f004d7aabc30ae407d3f48b0a79",
"darwin_x86_64": "3c89db4edcab7cf1c27bff178882e0f6f27f7afdf54e859fa041fca10febe4c6",
"linux_aarch64": "12b331c1d2db6b9eb13cfca64306b1b157a86eb69db83023e261eaa7e7c14588",
"linux_armv6hf": "8afc50b302d5feeac9381ea114d563f0150d061520042b254d6eb715797c8223",
"linux_x86_64": "8c3be12b05d5c177a04c29e3c78ce89ac86f1595681cab149b65b97c4e227198",
}

for arch, sha256 in sha256.items():
maybe(
http_archive,
name = "shellcheck_{arch}".format(arch = arch),
strip_prefix = "shellcheck-{version}".format(version = version),
build_file_content = """exports_files(["shellcheck"])
""",
sha256 = sha256,
urls = _urls(arch = arch, version = version),
)

# Special case, as it is a zip archive with no prefix to strip.
maybe(
http_archive,
name = "shellcheck_windows_x86_64",
build_file_content = """exports_files(["shellcheck"])
""",
sha256 = "8a4e35ab0b331c85d73567b12f2a444df187f483e5079ceffa6bda1faa2e740e",
urls = _urls(arch = "windows_x86_64", version = version),
)

def _impl(_):
shellcheck_dependencies()

shellcheck = module_extension(
implementation = _impl,
)
Loading