#!/bin/sh
-# 2016-01-06, alex@barton.de
+# brew-run -- Update, upgrade, and clean up Hoembrew installation.
# Include "ax-common.sh":
+ax_common_sourced=
for dir in "$HOME/lib" "$HOME/.ax" /usr/local /opt/ax /usr; do
[ -z "$ax_common_sourced" ] || break
ax_common="${dir}/lib/ax/ax-common.sh"
- [ -r "$ax_common" ] && source "$ax_common"
+ # shellcheck source=/usr/local/lib/ax/ax-common.sh
+ [ -r "$ax_common" ] && . "$ax_common"
done
if [ -z "$ax_common_sourced" ]; then
- function ax_msg() {
- echo "$2"
- }
- function ax_abort() {
- ax_msg - "$@"
- exit 1
- }
+ ax_msg() { shift; echo "$@"; }
+ ax_abort() { ax_msg - "$@"; exit 1; }
fi
unset dir ax_common ax_common_sourced
ax_msg - "Updating Homebrew installation ..."
brew update || ax_abort "Update failed!"
-echo
-outdated=$( brew outdated --quiet | wc -l | tr -d '\t ' )
-if [ $outdated -gt 0 ]; then
- ax_msg - "$outdated formula outdated:"
- brew outdated || ax_abort "Failed to list outdated packages!"
+outdated=$( brew outdated --verbose | grep -F -cv "pinned at" )
+if [ "$outdated" -gt 0 ]; then
+ echo
+ ax_msg - "$outdated formula & casks outdated:"
+ brew outdated --verbose || ax_abort "Failed to list outdated packages!"
+ echo
+
+ brew upgrade --ignore-pinned || ax_abort "Upgrade failed!"
echo
- brew upgrade --all || ax_abort "Upgrade failed!"
- brew linkapps --local || ax_abort "Linking of applications failed!"
+ ax_msg - "Cleaning up ..."
+ brew cleanup --prune=2 || ax_abort "\"brew cleanup\" failed!"
echo
- brew cleanup || ax_abort "\"brew cleanup\" failed!"
- brew prune || ax_abort "\"brew prune\" failed!"
else
- ax_msg - "Nothing outdated."
+ ax_msg 0 "Nothing outdated."
+ echo
fi