Weekend project: OSX launchctl wrapper in Go

I'm a big fan of lunchy, a friendly OSX launchctl wrapper written by Mike Perham, that allows to manage daemon plists with ease. After using it for a long time i decided to rewrite it in Go language. One of the benefits is speed and accessibility. I have a lot or rubies and gemsets on my development machine and using lunchy is actually a pain because its a ruby gem which requires to be installed per gemset or ruby version with RVM.

Go language allows to compile code to a single binary that could simply be dropped into any environment (OSX, Linux, Windows). Its almost the only reason why i started to use Go recently. I wrote a bunch of ruby CLI tools which work on Linux, Mac and Windows and i must say its not easy. With Go you can just compile code and distribute final binary. So one weekend i decided to rewrite lunchy in Go.

Usage

Add a new plist:

lunchy install /usr/local/Cellar/redis/2.8.1/homebrew.mxcl.redis.plist

Manage services:

lunchy start redis
lunchy stop redis
lunchy restart redis
lunchy status redis

If you have multiple plists from homebrew, you can simple control all of them:

$ lunchy status
homebrew.mxcl.elasticsearch
homebrew.mxcl.mysql
homebrew.mxcl.postgresql
homebrew.mxcl.redis

$ lunchy stop homebrew

Manage plists:

lunchy show redis
lunchy edit redis

Its pretty fast too.