Thanks Mark. You gave me a great idea.
I haven't noticed &&, || can mean logical operators on shell also. It appears '&& afplay ..' works only when 'brew upgrade' returns 0 which happens most of the time, and '|| afplay ..' works only when 'brew upgrade' returns 1 (or any non-zero) meaning error. I decided to use semicolon ';' so afplay can play sound alarm whatever 'brew upgrade' reterns after job done.
brew upgrade ; afplay /System/Library/Sounds/Submarine.aiff -v 10
EDIT: Now I use the following code in .profile (or .bashrc), which utilizes the advanced notifier tool, terminal-notifier
.
function brew { caffeinate -s brew $@; terminal-notifier -title 'Homebrew' -subtitle 'Finished' -message brew' '$1' '$2' '$3 -sound 'recv_mail' -contentImage '/Download/Any/Icon/beer_icon.png';}
Please note:
- There must be a whitespace after the left brace '{' for bash syntax.
caffeinate
is used to prevent Mac from falling into sleep mode while brew works for a long time. If you remove 'caffeinate -s', you should rename the function name also.
- You can install terminal-notifier with brew. -contentImage is optoinal of course.