| #!/usr/bin/env bash |
| |
| set -euo pipefail |
| |
| BUILDIFIER_SHORT_PATH=@@BUILDIFIER_SHORT_PATH@@ |
| ARGS=@@ARGS@@ |
| WORKSPACE="@@WORKSPACE@@" |
| |
| # Get the absolute path to the buildifier executable |
| buildifier_short_path=$(readlink "$BUILDIFIER_SHORT_PATH") |
| |
| # Use TEST_WORKSPACE to determine if the script is being ran under a test |
| if [[ -n "${TEST_WORKSPACE+x}" && -z "${BUILD_WORKSPACE_DIRECTORY+x}" ]]; then |
| FIND_FILE_TYPE="l" |
| # If WORKSPACE was provided, then the script is being run under a test in no_sandbox mode |
| # cd to the directory containing the WORKSPACE file |
| if [[ ! -z "${WORKSPACE+x}" ]]; then |
| FIND_FILE_TYPE="f" |
| WORKSPACE_PATH="$(dirname "$(realpath ${WORKSPACE})")" |
| if ! cd "$WORKSPACE_PATH" ; then |
| echo "Unable to change to workspace (WORKSPACE_PATH: ${WORKSPACE_PATH})" |
| fi |
| fi |
| else |
| # Change into the workspace directory if this is _not_ a test |
| if ! cd "$BUILD_WORKSPACE_DIRECTORY"; then |
| echo "Unable to change to workspace (BUILD_WORKSPACE_DIRECTORY: ${BUILD_WORKSPACE_DIRECTORY})" |
| exit 1 |
| fi |
| fi |
| |
| # Run buildifier on all starlark files |
| find . \ |
| -type "${FIND_FILE_TYPE:-f}" \ |
| @@EXCLUDE_PATTERNS@@ \ |
| \( -name '*.bzl' \ |
| -o -name '*.sky' \ |
| -o -name '*.bazel' \ |
| -o -name BUILD \ |
| -o -name '*.BUILD' \ |
| -o -name 'BUILD.*.oss' \ |
| -o -name WORKSPACE \ |
| -o -name WORKSPACE.bzlmod \ |
| -o -name WORKSPACE.oss \ |
| -o -name 'WORKSPACE.*.oss' \ |
| \) -print | xargs "$buildifier_short_path" "${ARGS[@]}" |