mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
89 lines
2.0 KiB
Bash
89 lines
2.0 KiB
Bash
# 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 | ls) ;;
|
|
list* | ls*) return 1 ;;
|
|
*) ;;
|
|
esac
|
|
|
|
local ls_env=()
|
|
local ls_args=()
|
|
|
|
local tty
|
|
if [[ -t 1 ]]
|
|
then
|
|
tty=1
|
|
ls_args+=("-Cq")
|
|
source "${HOMEBREW_LIBRARY}/Homebrew/utils/helpers.sh"
|
|
ls_env+=("COLUMNS=$(columns)")
|
|
fi
|
|
|
|
local formula=""
|
|
local cask=""
|
|
|
|
# `OPTIND` is used internally by `getopts` to track parsing position
|
|
local OPTIND=2 # skip $1 (and localise OPTIND to this function)
|
|
while getopts ":1lrt-:" arg
|
|
do
|
|
case "${arg}" in
|
|
# check for flags passed to ls
|
|
1 | l | r | t) ls_args+=("-${arg}") ;;
|
|
-)
|
|
local parsed_index=$((OPTIND - 1)) # Parse full arg to reject e.g. -r-formula
|
|
case "${!parsed_index}" in
|
|
--formula | --formulae) formula=1 ;;
|
|
--cask | --casks) cask=1 ;;
|
|
*) return 1 ;;
|
|
esac
|
|
;;
|
|
# reject all other flags
|
|
*) return 1 ;;
|
|
esac
|
|
done
|
|
# If we haven't reached the end of the arg list, we have named args.
|
|
if ((OPTIND - 1 != $#))
|
|
then
|
|
return 1
|
|
fi
|
|
|
|
if [[ -z "${cask}" && -d "${HOMEBREW_CELLAR}" ]]
|
|
then
|
|
if [[ -n "${tty}" && -z "${formula}" ]]
|
|
then
|
|
ohai "Formulae"
|
|
fi
|
|
|
|
local formula_output
|
|
formula_output="$(/usr/bin/env "${ls_env[@]}" ls "${ls_args[@]}" "${HOMEBREW_CELLAR}")" || exit 1
|
|
if [[ -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="$(/usr/bin/env "${ls_env[@]}" ls "${ls_args[@]}" "${HOMEBREW_CASKROOM}")" || exit 1
|
|
if [[ -n "${cask_output}" ]]
|
|
then
|
|
echo "${cask_output}"
|
|
fi
|
|
|
|
return 0
|
|
fi
|
|
}
|