Skip to content

Instantly share code, notes, and snippets.

@Alex4386
Last active April 9, 2021 08:31
Show Gist options
  • Save Alex4386/2c400ef03f4e07d33bd2bb41dd0f2065 to your computer and use it in GitHub Desktop.
Save Alex4386/2c400ef03f4e07d33bd2bb41dd0f2065 to your computer and use it in GitHub Desktop.
A shell-script based Automatic homebrew package manager updater for zsh
brew_update_version=$(date +"%Y%m%d")
brew_update_version_file="$HOME/.homebrew-lastupdate"
brew_update_in_progress_file="$HOME/.homebrew-update-in-progress"
brew_upgrade_required=0
test -f "$brew_update_version_file" || brew_upgrade_required=1
if [[ $brew_upgrade_required -eq 0 ]]; then
this_brew_version=$(cat "$brew_update_version_file")
test "$this_brew_version" = "$brew_update_version" || brew_upgrade_required=1
if [ -f "$brew_update_in_progress_file" ]; then
test "$this_brew_version" = "$brew_update_version" && brew_upgrade_required=0
fi
fi
if [[ $brew_upgrade_required -eq 1 ]]; then
echo -n "[Homebrew] Would you like to update? [Y/n] "
read -r -k 1 option
[[ "$option" != $'\n' ]] && echo
case "$option" in
[yY$'\n']) brew_upgrade_required=1 ;;
[nN]) brew_upgrade_required=0 ;;
esac
if [[ $brew_upgrade_required -eq 0 ]]; then
echo -n "[Homebrew] Do you want to skip update today? [y/N] "
read -r -k 1 option
[[ "$option" != $'\n' ]] && echo
case "$option" in
[nN$'\n']) brew_skip_update=1 ;;
[yY]) brew_skip_update=0 ;;
esac
fi
if [[ $brew_skip_update -eq 1 ]]; then
echo -n "[Homebrew] All right! I will not ask you to update for today."
echo -n $brew_update_version > $brew_update_version_file
fi
fi
if [[ $brew_upgrade_required -eq 1 ]]; then
echo "[Homebrew] Updating Homebrew..."
echo -n $brew_update_version > $brew_update_in_progress_file
brew update
brew upgrade
brew cleanup
brew doctor
echo -n $brew_update_version > $brew_update_version_file
rm -f $brew_update_in_progress_file
echo
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment