@echo off
setlocal EnableDelayedExpansion

set BUILDIFIER_SHORT_PATH=@@BUILDIFIER_SHORT_PATH@@
set EXTRA_ARGS=@@ARGS@@
set WORKSPACE=@@WORKSPACE@@

REM When --enable_runfiles, we should be able to locate buildifier directly through symlink.
for %%I in (%BUILDIFIER_SHORT_PATH%) do set "buildifier_short_path=%%~fI"

REM If we can't find it, then parse the MANIFEST file to find buildifier.
if not exist !buildifier_short_path! (
    if not exist MANIFEST (
        echo Runfiles are not enabled, yet a MANIFEST file cannot be found
        exit /b 1
    )
    type MANIFEST
    for /F "tokens=1" %%F IN ('findstr /L /C:buildifier.exe MANIFEST') DO (
        set "buildifier_short_path=%%~fF"
    )
)

if not exist !buildifier_short_path! (
    echo Failed to find buildifier at !buildifier_short_path!
    exit /b 1
)

if defined TEST_WORKSPACE (
    if not defined BUILD_WORKSPACE_DIRECTORY (
        if defined WORKSPACE (
            cd "%WORKSPACE%"
        ) else (
            set follow_links=1
        )
    )
) else (
    cd "%BUILD_WORKSPACE_DIRECTORY%"
)

call :collectFiles .

!buildifier_short_path! %EXTRA_ARGS% !files_to_analyze!

exit /b !ERRORLEVEL!

REM Utility function to collect all wanted files.
REM Exclude patterns are not supported by `dir.exe`.
:collectFiles

REM First, non-symlinked files
pushd %~1
FOR /F %%f IN ('dir /b/a:-d-l-h *.bzl *.sky *.bazel *.BUILD BUILD BUILD.*.oss WORKSPACE WORKSPACE.bzlmod WORKSPACE.oss WORKSPACE.*.oss 2^>nul') DO (
    REM echo File %~1\%%f
    set files_to_analyze=!files_to_analyze! %~1\%%f
)
popd

REM Next, directories.
REM
REM Interestingly, turning on the exclude hidden files option (-h) excludes the
REM `.git` directory but not other directories starting with a `.` like
REM `.github` or `.bcr`. I don't know why it works this way, but hey it works.
if defined follow_links (
    FOR /F %%d IN ('dir /b/a:d-h %~1 2^>nul') DO (
        call :collectFiles "%~1\%%d"
    )
) else (
    FOR /F %%d IN ('dir /b/a:d-l-h %~1 2^>nul') DO (
        call :collectFiles "%~1\%%d"
    )
)
