HomeBrewのupdateの自動化

# 初めに
Macを使っていると、必ず使うのがHomeBrewですね。一方で、homebrew自体のupdateは結構忘れやすいですね。というか、私はほとんどしていませんでした。
こまめにパッケージの情報が更新されたり、本体の更新があったりと。。

とりあえず、環境とは別にパッケージマネージャーは最新にしておくに越したことはないでしょう！！
（この間masをアップデートしてとんでもない目にあったのですが、それはまた別の話）

# .zshrcと.zprofile
少し寄り道をして、.zshrcと.zprofileについて触れておこうと思う。どちらもshellを起動した際に読み込まれるプロファイルという認識はあるが何が違うかと問われると分からない。rcとprofileについて調べて備忘録として残しておこうと思う。

## rcとprofileの違い
|rc|起動時に読み込まれる|
|--|--|
|profile|ログイン時に読み込まれる|

Macでターミナルを開くとshellの起動とログインが行われる。そのため、`profile`と`rc`を区別せずに使用することができた。一方で、起動したshell中で`zsh`を起動するとログインは行われない。つまり、`rc`のみが読み込まれる。つまり、起動時に必要な情報を`profile`,それ以外の場合に読み込みたい情報を`rc`に書き込む必要がある。

# shell起動時にbrewをupdateさせる。

```zsh:.zprofile
# HomeBrew PATH
eval "$(/opt/homebrew/bin/brew shellenv)"

# Pyenv PATH 
eval "$(pyenv init --path)"

# brew update
brew update
``` 
これにより、brew updateが自動で行われ、Homebrew自体を最新の状態にすることができる。initializeを設定することで、便利になる点は、クラスと同様である。好みのshellを作成するためには必要な機能だ。

# おまけ

pforileとrcファイルに記述している内容を紹介する。参考になればと思う。
```zsh:.zprofile
# HomeBrew PATH
eval "$(/opt/homebrew/bin/brew shellenv)"

# Pyenv PATH 
eval "$(pyenv init --path)"

# brew update
brew update

# check lib and app versions
~/.personalsettings/check_versions.sh

# brew bandle update
~/.personalsettings/make_brewfile.sh
```

```zsh:.personalsettings/check_versions.sh
#!/bin/bash

# UPDATE List Home Brew
APPS=$(brew outdated)
if [ -z "$APPS" ]; then
  printf "********************************************************************************\n"
  printf "ALL libs installed in brew are Latest   \n"
  printf "********************************************************************************\n"
else
  printf "********************************************************************************\n"
  printf "NEED upgrade libs (brew upgrade)\n"
  brew outdated
  printf "********************************************************************************\n"
fi

# UPDATE List mas
APPS=$(mas outdated)
if [ -z "$APPS" ]; then
  printf "********************************************************************************\n"
  printf "ALL apps installed in mas are Latest\n"
  printf "********************************************************************************\n"
else
  printf "********************************************************************************\n"
  printf "NEED upgrade apps (mas upgrade)\n"
  mas outdated
  printf "********************************************************************************\n"
fi
```
```zsh:.personalsettings/make_brewfile.sh
#!/bin/bash

BREW_FILE_PATH=~/.personalsettings/Brewfile
rm $BREW_FILE_PATH
brew bundle dump --file $BREW_FILE_PATH

printf "********************************************************************************\n"
printf "End of rewright Brewfile (PATH:$BREW_FILE_PATH)\n"
printf "********************************************************************************\n"

```
brew fileを作成することで、Macを移行した際にBrewfileからインストールを行うことができる。基本的にbrewを通してインストールしているため、環境の移行は楽に済む想定である。
```zsh:.zshrc
# Oh my zsh
export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="robbyrussell"
plugins=(git)
source $ZSH/oh-my-zsh.sh

# Completion uv command
eval "$(uv generate-shell-completion zsh)"

# command 
alias ls='ls --color -F'
alias la='ls -A'
alias ll='ls -l'
alias grep='grep --color=auto'
alias cdw='cd ~/Work'

alias brew upgrade='brew upgrade ; brew cleanup'

alias yoshi='cat ~/.personalsettings/yoshi_aa.txt'
```