ladybird/Meta/.shell_include.sh
Nico Weber 1a85539741 Meta: Find mke2fs on macOS even if HOMEBREW_PREFIX is not set
...as long as `brew` is on the path and `brew --prefix e2fsprogs`
tells us where it is.

This is for people who don't have `"$(brew shellenv)"` in their .zshrc.
2022-12-18 17:49:49 -07:00

53 lines
1.5 KiB
Bash
Executable file

#!/usr/bin/env bash
# shellcheck disable=SC2034
# SC2034: "Variable appears unused. Verify it or export it."
# Those are intentional here, as the file is meant to be included elsewhere.
# NOTE: If using another privilege escalation binary make sure it is configured or has the appropiate flag
# to keep the current environment variables in the launched process (in sudo's case this is achieved
# through the -E flag described in sudo(8).
SUDO="sudo -E"
if [ "$(uname -s)" = "SerenityOS" ]; then
SUDO="pls -E"
fi
die() {
echo "die: $*"
exit 1
}
find_executable() {
paths=("/usr/sbin" "/sbin")
if [ "$(uname -s)" = "Darwin" ]; then
if [ -n "${HOMEBREW_PREFIX}" ]; then
paths+=("${HOMEBREW_PREFIX}/opt/e2fsprogs/bin" "${HOMEBREW_PREFIX}/opt/e2fsprogs/sbin")
elif command -v brew > /dev/null 2>&1; then
if prefix=$(brew --prefix e2fsprogs 2>/dev/null); then
paths+=("${prefix}/bin" "${prefix}/sbin")
fi
fi
fi
executable="${1}"
# Prefer tools from PATH over fallback paths
if command -v "${executable}"; then
return 0
fi
for path in "${paths[@]}"; do
if command -v "${path}/${executable}"; then
return 0
fi
done
# We return the executable's name back to provide meaningful messages on future failure
echo "${executable}"
}
FUSE2FS_PATH="$(find_executable fuse2fs)"
RESIZE2FS_PATH="$(find_executable resize2fs)"
E2FSCK_PATH="$(find_executable e2fsck)"
MKE2FS_PATH="$(find_executable mke2fs)"