77 lines
2.0 KiB
Bash
77 lines
2.0 KiB
Bash
#####################################################################
|
|
|
|
setup.packages.installer.brew.setup-package-manager() {
|
|
command -v brew &>/dev/null && return 0
|
|
|
|
# an already-installed homebrew still isn't on PATH in a fresh login
|
|
# shell, so adopt it before concluding it needs installing
|
|
local brew_path
|
|
for brew_path in /opt/homebrew/bin/brew /usr/local/bin/brew
|
|
do
|
|
[[ -x "${brew_path}" ]] || continue
|
|
eval "$("${brew_path}" shellenv)"
|
|
return 0
|
|
done
|
|
unset brew_path
|
|
|
|
: \
|
|
&& /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" \
|
|
&& eval "$(/opt/homebrew/bin/brew shellenv 2>/dev/null || /usr/local/bin/brew shellenv 2>/dev/null)" \
|
|
|| echo.error 'failed to install homebrew' \
|
|
|| return 1 \
|
|
;
|
|
}
|
|
|
|
setup.packages.installer.brew.update-repositories() { brew update && brew upgrade; }
|
|
|
|
setup.packages.installer.brew.list-installed() { # targets needing "brew install --cask" are carried through this whole pipeline as "cask:name"
|
|
brew list --formula 2>/dev/null
|
|
brew list --cask 2>/dev/null | sed 's/^/cask:/'
|
|
}
|
|
|
|
setup.packages.installer.brew.install-batch() {
|
|
local -a formulae casks
|
|
local target
|
|
for target in "${@}"
|
|
do
|
|
case "${target}" in
|
|
( cask:* ) casks+=("${target#cask:}") ;;
|
|
( * ) formulae+=("${target}") ;;
|
|
esac
|
|
done
|
|
unset target
|
|
|
|
if [[ "${#formulae[@]}" -gt 0 ]]
|
|
then
|
|
yes | brew install "${formulae[@]}" || return 1
|
|
fi
|
|
|
|
if [[ "${#casks[@]}" -gt 0 ]]
|
|
then
|
|
yes | brew install --cask "${casks[@]}" || return 2
|
|
fi
|
|
}
|
|
|
|
setup.packages.installer.brew.install-managed() {
|
|
local target="${1}"
|
|
local -a cask_flag
|
|
if [[ "${target}" == cask:* ]]
|
|
then
|
|
target="${target#cask:}"
|
|
cask_flag=(--cask)
|
|
fi
|
|
|
|
if brew list "${cask_flag[@]}" --versions "${target}" &>/dev/null
|
|
then
|
|
echo.success "found '${target}'"
|
|
return 0
|
|
fi
|
|
|
|
: \
|
|
&& echo.status "installing '${target}'" \
|
|
&& yes | brew install "${cask_flag[@]}" "${target}" \
|
|
&& echo.success "'${target}' installed" \
|
|
|| echo.error "failed to install '${target}'" \
|
|
;
|
|
}
|