我想安装一个酿造配方或升级它(如果已经使用 bash 安装)。
仅当最后未安装配方时,该命令才应返回非零退出代码。
附言。应该注意的是brew install xxx
返回错误代码如果xxx
已安装。
背景:https://github.com/Homebrew/legacy-homebrew/issues/30939 https://github.com/Homebrew/legacy-homebrew/issues/30939
我也只需要这个。这似乎有效。
#!/usr/bin/env bash
package=$1
pkg_installed=false
pkg_updated=false
verbose=true
# TODO: ensure valid input
brew update >/dev/null 2>&1
list_output=`brew list | grep $package`
outdated_output=`brew outdated | grep $package`
# now enable error checking
set -e
if [[ ! -z "$list_output" ]]; then
pkg_installed=true
$verbose && echo "package is installed"
if [[ -z "$outdated_output" ]]; then
pkg_updated=true
$verbose && echo "package is updated"
else
$verbose && echo "package is not updated. updating..."
brew upgrade $package
fi
else
$verbose && echo "package is not installed. installing..."
brew install $package
fi
Usage:
> brew outdated
jemalloc (4.3.0) < 4.3.1
terraform (0.7.9) < 0.7.10
> brew_install_or_upgrade.sh jemalloc; echo $?
package is installed
package is not updated. updating...
==> Upgrading 1 outdated package, with result:
jemalloc 4.3.1
==> Upgrading jemalloc
==> Downloading https://homebrew.bintray.com/bottles/jemalloc-4.3.1.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring jemalloc-4.3.1.el_capitan.bottle.tar.gz
???? /usr/local/Cellar/jemalloc/4.3.1: 16 files, 1.4M
0
> brew_install_or_upgrade.sh jemalloc; echo $?
package is installed
package is updated
0
>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)