kegger

Automated way to install Mac OS X applications via Homebrew Cask

View project on GitHub

kegger(1)

Homebrew and Cask have made it their life’s work to automate the installation of various software for Mac OS X developers, either via Brew formulas or Casks. Their hard work inspired me to create kegger, which is designed to automate the installation of more than 1 cask at a time. You may think to yourself,

You can already do this with cask by passing it several casks such as brew cask install alfred dropbox, what makes this any easier?

The simple answer is nothing. I have several machines, work, personal, server, etc,. I wanted to be able to install different software without having to remember what was that one line. Or better yet, I wanted to group the software by its purpose so that I could install them by “categories”. Or even better, I could maintain a list of software to update in its own repository and kegger would update and install anything that was new. Ideally this is meant to run alongside your initial machine configuration or setup, such as what I’m doing with eighth-inning.

Requirements

  • Git and Github account
  • Homebrew (for package installation of the following)
  • jq (for JSON to bash manipulation)
  • roundup (for testing, only required if you are contributing)

How to install

kegger(1) is a shell script, so installation is simple. Download, extract and copy the script in the bin directory over to the /usr/local/bin directory and make sure it’s in your $PATH. The man page, man kegger, can be installed by copying over the kegger.1 file to /usr/share/man/man1.

One-line installation

$ bash -c "$(curl -#fL raw.github.com/iamnewton/kegger/go/install)"

N.B. - using the one-line installation will download and install all of the dependencies, including the man page.

Usage

$ kegger [options] <github_gist_id>

Options

Flag Meaning
-h, --help Print out help text
-v, --version Print out version

How to Create a Keg?

When passing kegger(1) a Gist ID, there is a specific format that should be adhered to in order to ensure the script works correctly; I’ve named this format ‘keg’. While a keg file is simply a text file with the extension .keg, it doesn’t have to be. What does have to happen? Each file stored on Github’s Gist platform should have a single cask on each line. If you want to see an example, I have created 4 different ones that I currently use, listed below. If you need to find the name of a Cask, then you can run brew cask search <term>.

Contributing

Suggestions and contributions are always welcome. If you’d like to see a new keg and don’t feel comfortable creating your own, you can get involved by either creating an issue, or forking the code and creating a pull request. For more information on how to work with the code, please see the CONTRIBUTING.md documentation.