Zuruzuru Blog 🍜< ズルズル
September 08, 2022
パッケージは毎日アップデートしよう
#shell
#zsh
#dotfiles
業務でとあるパッケージが古く自分の環境で動かなかったことがあり、毎日アップデートするようにした。
最新が最高。幸いなことに、ほとんどのツールやパッケージはhomebrewとghqで管理していたので、毎日一括アップデートするようなコマンドを叩いて更新するだけで良さそうだった。 brewもghqも途中であるパッケージの更新に失敗した場合でも、そこで終了せず全部のパッケージに対して更新を行なってくれるので特にそういう処理を自分で書く必要もなかった。
なので前回の一括アップデートから1日経っていたら警告をターミナルで出すように実装した。
毎回プロンプトが更新されるたびに確認処理が入るので冗長にも思えるけど今のところ困ってないのでこのままにする。
実行のタイミングを考えるのがめんどくさくなってしまったのでやめてしまったけど、AppleScriptで定期実行するようなコードを書いたほうがコマンド打つ手間も ないし良かったかもしれない。
コード
## .zshrc
# パッケージのアップデート
function update() {
# homebrewのアップデート & brewパッケージの一括アップデート
echo " # Homebrew Packages"
brew upgrade
# リポジトリの一括アップデート
echo " # Git Repositories"
ghq list | ghq get --update --parallel
# 更新日時をファイルに残す
# 自分はgheで管理しているdotfileのリポジトリ配下に置くようにしている(もちろんgitignoreしてる)
date +%s > "$(ghq root)/github.com/yagijin/setting_files/last_updated"
}
# 最後にパッケージアップデートした時から一定時間経っているか判定する
function should_update() {
now=`date +%s`
date_file="$(ghq root)/github.com/yagijin/setting_files/last_updated"
# 86400秒は1日
will_update="$(($(cat $date_file)+86400))"
if [ $now -gt $will_update ]
then
echo ' ##################################################\n' \
'It'"'"'s Time.\n You Should Update Packages Using #update Command🫵\n' \
'##################################################'
fi
}
# zshのhook関数
precmd () {
should_update
}