78 lines
1.6 KiB
Bash
Raw Normal View History

# does the quickest output of brew list possible for no named arguments.
# HOMEBREW_CELLAR, HOMEBREW_PREFIX are set by brew.sh
# shellcheck disable=SC2154
homebrew-list() {
case "$1" in
# check we actually have list and not e.g. listsomething
list) ;;
list*) return 1 ;;
*) ;;
esac
local ls_args=()
local formula=""
local cask=""
for arg in "$@"
do
case "${arg}" in
# check for flags passed to ls
-1 | -l | -r | -t) ls_args+=("${arg}") ;;
--formula | --formulae) formula=1 ;;
--cask | --casks) cask=1 ;;
# reject all other flags
-* | *) return 1 ;;
esac
done
local tty
if [[ -t 1 ]]
then
tty=1
fi
local error_string="LS_ERRORED"
if [[ -z "${cask}" && -d "${HOMEBREW_CELLAR}" ]]
then
if [[ -n "${tty}" && -z "${formula}" ]]
then
ohai "Formulae"
fi
local formula_output
formula_output="$(ls "${ls_args[@]}" "${HOMEBREW_CELLAR}" || echo "${error_string}")"
if [[ "${formula_output}" == "${error_string}" ]]
then
exit 1
elif [[ -n "${formula_output}" ]]
then
echo "${formula_output}"
fi
if [[ -n "${tty}" && -z "${formula}" ]]
then
echo
fi
fi
if [[ -z "${formula}" && -d "${HOMEBREW_CASKROOM}" ]]
then
if [[ -n "${tty}" && -z "${cask}" ]]
then
ohai "Casks"
fi
local cask_output
cask_output="$(ls "${ls_args[@]}" "${HOMEBREW_CASKROOM}" || echo "${error_string}")"
if [[ "${cask_output}" == "${error_string}" ]]
then
exit 1
elif [[ -n "${cask_output}" ]]
then
echo "${cask_output}"
fi
return 0
fi
}