@echo off set ARGS=@@ARGS@@ rem Remove the leading '(' and trailing ')' characters that surround the arguments set stripped_args=%ARGS:~1,-1% rem Unquote the arguments set stripped_args=%stripped_args:'=% rem Get the absolute path to the buildifier executable for /f "tokens=2" %%i in ('findstr /r "\" MANIFEST') do (set buildifier_abs_path=%%i) powershell ^ function Buildify($Root)^ {^ $Folder = (New-Object -Com Scripting.FileSystemObject).GetFolder($Root);^ $Files = $Folder.Files ^| Where-Object {^ $_.Name -eq 'BUILD.bazel' `^ -or $_.Name -eq 'BUILD' `^ -or $_.Name -eq 'WORKSPACE' `^ -or $_.Name -eq 'WORKSPACE.bazel' `^ -or $_.Name -eq 'WORKSPACE.oss' `^ -or $_.Name -clike '*.bzl' `^ -or $_.Name -clike '*.sky' `^ -or $_.Name -clike '*.BUILD' `^ -or $_.Name -clike 'BUILD.*.bazel' `^ -or $_.Name -clike 'BUILD.*.oss' `^ -or $_.Name -clike 'WORKSPACE.*.bazel' `^ -or $_.Name -clike 'WORKSPACE.*.oss'^ };^ foreach ($File in $Files)^ {^ ^& '%buildifier_abs_path%' %stripped_args% $File.Path;^ };^ foreach ($SubFolder in $Folder.Subfolders)^ {^ $CurrentItem = Get-Item $SubFolder.Path -ErrorAction SilentlyContinue;^ if ($CurrentItem -and !$CurrentItem.Attributes.ToString().Contains('ReparsePoint'))^ {^ Buildify($SubFolder.Path);^ };^ };^ };^ Buildify('%BUILD_WORKSPACE_DIRECTORY%');