brew upgrade 半自動でやる #
brew update && brew upgrade && brew cleanup && brew autoremove
を手動でやるのが面倒になって、homebrew-update 試そうとしたんだけど「チェックだけする。自動アップグレードしない」のやり方がよくわからなくて、仕方ないので shell script 書いた。想像してたより気に入ったんで職場で共有。そしてここでも公開。
コメントは生成 AI がいれてくれたよ。素敵
#!/bin/bash
# brew-outdated-check.sh
# Homebrewの更新をチェックして通知します
#
# セットアップ:
# 1. brew install terminal-notifier
# 2. システム設定 > 通知 で terminal-notifier の通知を許可
# (初回起動時にダイアログが出るので、それに沿って設定で OK)
# 3. ~/.bashrc または ~/.zshrc に以下を追加:
# (前回ターミナル起動が 12 時間以上前ならチェック)
#
# CHECK_FILE="/tmp/brew_check_last_${USER}"
# CHECK_SH="$HOME/bin/brew-outdated-check.sh"
# if [[ ! -f "$CHECK_FILE" || $(find "$CHECK_FILE" -mmin +720) ]]; then
# (bash "$CHECK_SH" &) > /dev/null 2>&1
# touch "$CHECK_FILE"
# fi
# 0. Terminal, iTerm, WezTerm ....
case "$TERM_PROGRAM" in
"WezTerm") TERM_APP="WezTerm" ;;
"iTerm.app") TERM_APP="iTerm" ;;
"Apple_Terminal") TERM_APP="Terminal" ;;
*) TERM_APP="Terminal" ;; # デフォルト
esac
# 1. 依存ツールのチェック
if ! command -v terminal-notifier &> /dev/null; then
echo "⚠️ terminal-notifier がインストールされていません。"
echo "通知機能を利用するために、以下のコマンドでインストールしてください:"
echo "brew install terminal-notifier"
exit 1
fi
# 2. 更新があるかチェック
brew update > /dev/null 2>&1
OUTDATED_COUNT=$(brew outdated --quiet | wc -l | tr -d ' ')
# 3. 更新があったら通知
if [ "$OUTDATED_COUNT" -gt 0 ]; then
MAINTENANCE_CMD="brew upgrade && brew cleanup && brew autoremove";
terminal-notifier \
-group "brew-maintenance" \
-title "🍺 Homebrew Update" \
-message "${OUTDATED_COUNT}件の更新があります。クリックでコマンドをコピーしてターミナルを開きます。ペーストして実行してください。" \
-sound default \
-execute "echo '$MAINTENANCE_CMD' | pbcopy && open -a '$TERM_APP'"
# -execute "osascript -e 'tell application \"${TERM_APP}\" to activate' -e 'delay 0.5' -e 'tell application \"System Events\" to keystroke \"$MAINTENANCE_CMD\" & return'"
echo "通知を送信しました (${OUTDATED_COUNT}件の更新)"
else
echo "✅ 更新はありません"
fi