-
-
Save jpawlowski/5248465 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| # Sync Homebrew installations between Macs via Dropbox | |
| # | |
| BREW="/usr/local/bin/brew" | |
| # first get local settings | |
| echo "Reading local settings ..." | |
| rm -f /tmp/brew-sync.* | |
| $BREW tap > /tmp/brew-sync.taps | |
| $BREW list > /tmp/brew-sync.installed | |
| # then combine it with list in Dropbox | |
| echo "Reading settings from Dropbox ..." | |
| [ -e ~/Dropbox/Apps/Homebrew/brew-sync.taps ] && cat ~/Dropbox/Apps/Homebrew/brew-sync.taps >> /tmp/brew-sync.taps | |
| [ -e ~/Dropbox/Apps/Homebrew/brew-sync.installed ] && cat ~/Dropbox/Apps/Homebrew/brew-sync.installed >> /tmp/brew-sync.installed | |
| # make the lists unique and sync into Dropbox | |
| echo "Syncing to Dropbox ..." | |
| mkdir -p ~/Dropbox/Apps/Homebrew | |
| cat /tmp/brew-sync.taps | sort | uniq > ~/Dropbox/Apps/Homebrew/brew-sync.taps | |
| cat /tmp/brew-sync.installed | sort | uniq > ~/Dropbox/Apps/Homebrew/brew-sync.installed | |
| # Set taps | |
| echo "Enabling taps ..." | |
| for TAP in `cat ~/Dropbox/Apps/Homebrew/brew-sync.taps`; do | |
| $BREW tap ${TAP} >/dev/null | |
| done | |
| # Install missing Homebrew packages | |
| echo "Install missing packages ..." | |
| for PACKAGE in `cat ~/Dropbox/Apps/Homebrew/brew-sync.installed`; do | |
| $BREW list ${PACKAGE} >/dev/null | |
| [ "$?" != "0" ] && $BREW install ${PACKAGE} | |
| done |
Enabling taps ...
Updating Homebrew...
Error: Invalid tap name '==>'
Updating Homebrew...
Error: Invalid tap name 'Auto-updated'
Updating Homebrew...
Error: Invalid tap name 'Homebrew!'
Error: Invalid tap name '==>'
Error: Invalid tap name 'Deleted'
Error: Invalid tap name 'Formulae'
Error: Invalid tap name '==>'
Error: Invalid tap name 'Updated'
Error: Invalid tap name 'Formulae'
Error: Invalid tap name 'Updated'
Error: Invalid tap name '1'
Error: Invalid tap name 'tap'
What matter with those?
Look in to using brew bundle instead, not only does it combine taps/brews/casks into one Brewfile but it also saves the arguments the brews were installed with, for example brew install gnu-sed --with-default-names gets represented as brew "gnu-sed", args: ["with-default-names"] in the Brewfile.
Very helpful. I forked @witt3rd's gist and added
brew updateso that the cask file is not filled with update/migration messages, along with changing the directory where the items are stored.