 7073258a6a
			
		
	
	
		7073258a6a
		
			
		
	
	
	
	
		
			
			Similarly to have we have with other commands, use Bash to speed it up.
Before:
```
$ hyperfine "brew list"
Benchmark 1: brew list
  Time (mean ± σ):     559.9 ms ± 122.8 ms    [User: 176.2 ms, System: 126.2 ms]
  Range (min … max):   503.2 ms … 907.3 ms    10 runs
```
After:
```
$ hyperfine "brew list"
Benchmark 1: brew list
  Time (mean ± σ):     223.7 ms ±  31.9 ms    [User: 35.0 ms, System: 53.4 ms]
  Range (min … max):   198.1 ms … 302.4 ms    10
```
Petty after comparison because someone on Homebrew/discussions compared
them:
```
$ hyperfine "brew list" "pip3 list"
Benchmark 1: brew list
  Time (mean ± σ):     213.1 ms ±  22.8 ms    [User: 34.2 ms, System: 49.2 ms]
  Range (min … max):   191.2 ms … 272.3 ms    13 runs
Benchmark 2: pip3 list
  Time (mean ± σ):     271.7 ms ±   4.6 ms    [User: 191.9 ms, System: 40.0 ms]
  Range (min … max):   264.7 ms … 281.4 ms    10 runs
Summary
  brew list ran
    1.28 ± 0.14 times faster than pip3 list
```
---
While we're here, also add the `HOMEBREW_CASKROOM` environment variable
to make things a bit cleaner and use `--caskroom` in documentation.
Co-authored-by: Carlo Cabrera <30379873+carlocab@users.noreply.github.com>
		
	
			
		
			
				
	
	
		
			78 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.6 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) ;;
 | |
|     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
 | |
| }
 |