Skip to content

Commit

Permalink
list.sh: improve arg parsing, support brew ls
Browse files Browse the repository at this point in the history
  • Loading branch information
Bo98 committed Sep 2, 2024
1 parent fafa618 commit 79597ca
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 15 deletions.
2 changes: 1 addition & 1 deletion Library/Homebrew/brew.sh
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ case "$@" in
homebrew-command-path "$@" && exit 0
;;
# falls back to cmd/list.rb on a non-zero return
list*)
list* | ls*)
source "${HOMEBREW_LIBRARY}/Homebrew/list.sh"
homebrew-list "$@" && exit 0
;;
Expand Down
31 changes: 18 additions & 13 deletions Library/Homebrew/list.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,32 +4,37 @@
homebrew-list() {
case "$1" in
# check we actually have list and not e.g. listsomething
list) ;;
list*) return 1 ;;
list | ls) ;;
list* | ls*) return 1 ;;
*) ;;
esac

local ls_args=()
local formula=""
local cask=""

local first_arg
for arg in "$@"
local OPTIND=2 # skip $1 (and localise OPTIND to this function)
while getopts ":1lrt-:" arg
do
if [[ -z "${first_arg}" ]]
then
first_arg=1
[[ "${arg}" == "list" ]] && continue
fi
case "${arg}" in
# check for flags passed to ls
-1 | -l | -r | -t) ls_args+=("${arg}") ;;
--formula | --formulae) formula=1 ;;
--cask | --casks) cask=1 ;;
1 | l | r | t) ls_args+=("-${arg}") ;;
-)
case "${OPTARG}" in
formula | formulae) formula=1 ;;
cask | casks) cask=1 ;;
*) return 1 ;;
esac
;;
# reject all other flags
-* | *) return 1 ;;
*) 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

local tty
if [[ -t 1 ]]
Expand Down
2 changes: 1 addition & 1 deletion Library/Homebrew/test/cmd/list_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
(HOMEBREW_CELLAR/f/"1.0/somedir").mkpath
end

expect { brew "list", "--formula" }
expect { brew_sh "list", "--formula" }
.to output("#{formulae.join("\n")}\n").to_stdout
.and not_to_output.to_stderr
.and be_a_success
Expand Down

0 comments on commit 79597ca

Please sign in to comment.