| #! /usr/bin/env bash | |
| 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 [[ ! -z "${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 | |
| if [[ ! -z "${WORKSPACE:+x}" ]]; then | |
| FIND_FILE_TYPE="f" | |
| # resolve the WORKSPACE symlink | |
| # use `realpath` if available and `readlink` otherwise (typically macOS) | |
| if command -v realpath &> /dev/null; then | |
| WORKSPACE_LINK="$(realpath ${WORKSPACE})" | |
| elif command -v readlink &> /dev/null; then | |
| WORKSPACE_LINK="$(readlink ${WORKSPACE})" | |
| else | |
| echo "Unable to resolve symlink (WORKSPACE: ${WORKSPACE})" | |
| exit 1 | |
| fi | |
| # Find the directory containing the WORKSPACE file | |
| WORKSPACE_PATH="$(dirname "$WORKSPACE_LINK")" | |
| # Change the working directory to the WORKSPACE parent | |
| 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 '*.star' \ | |
| -o -name '*.bazel' \ | |
| -o -name BUILD \ | |
| -o -name '*.BUILD' \ | |
| -o -name BUILD.oss \ | |
| -o -name 'BUILD.*.oss' \ | |
| -o -name WORKSPACE \ | |
| -o -name WORKSPACE.oss \ | |
| -o -name WORKSPACE.bzlmod \ | |
| -o -name 'WORKSPACE.*.oss' \ | |
| \) -print | xargs "$buildifier_short_path" "${ARGS[@]}" |