| """ |
| 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) |