mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
42 lines
1.1 KiB
Bash
42 lines
1.1 KiB
Bash
![]() |
#!/bin/bash
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
# Try removing as many empty directories as possible with a single
|
||
|
# `rmdir` call to avoid or at least speed up the loop below.
|
||
|
if /bin/rmdir -- "${@}" &>/dev/null; then
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
for path in "${@}"; do
|
||
|
symlink=true
|
||
|
[[ -L "${path}" ]] || symlink=false
|
||
|
|
||
|
directory=false
|
||
|
if [[ -d "${path}" ]]; then
|
||
|
directory=true
|
||
|
|
||
|
if [[ -e "${path}/.DS_Store" ]]; then
|
||
|
/bin/rm -- "${path}/.DS_Store"
|
||
|
fi
|
||
|
|
||
|
# Some packages leave broken symlinks around; we clean them out before
|
||
|
# attempting to `rmdir` to prevent extra cruft from accumulating.
|
||
|
/usr/bin/find -f "${path}" -- -mindepth 1 -maxdepth 1 -type l ! -exec /bin/test -e {} \; -delete
|
||
|
elif ! ${symlink} && [[ ! -e "${path}" ]]; then
|
||
|
# Skip paths that don't exists and aren't a broken symlink.
|
||
|
continue
|
||
|
fi
|
||
|
|
||
|
if ${symlink}; then
|
||
|
# Delete directory symlink.
|
||
|
/bin/rm -- "${path}"
|
||
|
elif ${directory}; then
|
||
|
# Delete directory if empty.
|
||
|
/usr/bin/find -f "${path}" -- -maxdepth 0 -type d -empty -exec /bin/rmdir -- {} \;
|
||
|
else
|
||
|
# Try `rmdir` anyways to show a proper error.
|
||
|
/bin/rmdir -- "${path}"
|
||
|
fi
|
||
|
done
|