blob: 1d4491e8a7add45f31f98a636229a1fec77e793d [file]
"""
The module defines buildifier as a Bazel rule.
"""
load(
"//buildifier/internal:factory.bzl",
"buildifier_attr_factory",
"buildifier_impl_factory",
)
def _buildifier_impl(ctx):
return [buildifier_impl_factory(ctx)]
_buildifier = rule(
implementation = _buildifier_impl,
attrs = buildifier_attr_factory(),
executable = True,
)
def buildifier(**kwargs):
"""
Wrapper for the _buildifier rule. Adds 'manual' to the tags.
Args:
**kwargs: all parameters for _buildifier
"""
tags = kwargs.get("tags", [])
if "manual" not in tags:
tags.append("manual")
kwargs["tags"] = tags
_buildifier(**kwargs)
def _buildifier_test_impl(ctx):
return [buildifier_impl_factory(ctx, test_rule = True)]
_buildifier_test = rule(
implementation = _buildifier_test_impl,
attrs = buildifier_attr_factory(True),
test = True,
)
def buildifier_test(**kwargs):
"""
Wrapper for the _buildifier_test rule. Optionally disables sandboxing and caching.
Args:
**kwargs: all parameters for _buildifier_test
"""
if kwargs.get("no_sandbox", False):
tags = kwargs.get("tags", [])
# Note: the "external" tag is a workaround for
# https://github.com/bazelbuild/bazel/issues/15516.
for t in ["no-sandbox", "no-cache", "external"]:
if t not in tags:
tags.append(t)
kwargs["tags"] = tags
_buildifier_test(**kwargs)