t

メモ

Interactive Operations with Homebrew

brew cleanup とか brew switch とか brew upgrade とかをインタラクティブに実行できると楽な気がしたので、みっともないワンライナーを書いてみた。

brew.cleanup() {
    brew info --json=v1 --installed | jq '.[] | select(.installed | has(1)) | select(if .revision == 0 then .versions.stable else "\(.versions.stable)_\(.revision)" end == if .keg_only == true then .installed[(.installed | length) - 1].version else .linked_keg end) | if .linked_keg == null then .name else "\(.name) (\(.linked_keg))" end' | tr -d '"' | peco | awk '{ print $1 }' | xargs -n 1 brew cleanup
}

brew.switch() {
    brew info --json=v1 --installed | jq '.[] | select(.installed | has(1)) | "\(.name) \(.installed | .[].version)"' | tr -d '"' | peco  --query "$*" | xargs -n 2 brew switch
}

brew.upgrade() {
    brew outdated -v | tail -n +2 | peco | awk '{ print $1 }' | xargs brew upgrade
}

brew.update.upgrade() {
    brew update && brew.upgrade
}