Wynn Netherland changelog.com/posts

lunchy: A friendly wrapper for OS X launchctl

If you run OS X, you’ve probably encountered some frustration with Apple’s launchctl command line options when starting, stopping, and restarting your launchd daemons. Whereas most things Apple are minimalist, launchctl options are quite verbose. For example, how many times have you installed a Homebrew package only to get met with something like:

If this is your first install, automatically load on login with:
    cp /usr/local/Cellar/mongodb/1.6.5-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents
    launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

If this is an upgrade and you already have the org.mongodb.mongod.plist loaded:
    launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
    cp /usr/local/Cellar/mongodb/1.6.5-x86_64/org.mongodb.mongod.plist ~/Library/LaunchAgents
    launchctl load -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

Or start it manually:
    mongod run --config /usr/local/Cellar/mongodb/1.6.5-x86_64/mongod.conf

So to crank up Mongo you want me to pass that entire path to launchctl?

Lunchy - “Start your agents and go to lunch”

Thank goodness there’s Lunchy from Mike Perham. Lunchy simplifies the command line interface to launchctl. To get started, install the gem:

gem install lunchy

Now we can list all of our agents with ls

» lunchy ls
com.adobe.AAM.Updater-1.0
com.adobe.CS5ServiceManager
com.apple.FTMonitor
com.apple.apsd-ft
com.apple.imagent
com.apple.marcoagent
com.bjango.istatlocal
com.embercode.TVShowsHelper
com.github.dotjs
com.google.keystone.agent
com.mysql.mysqld
com.wacom.pentablet
net.culater.SIMBL.Agent
net.sourceforge.tvshows
org.mongodb.mongod
org.postgresql.postgres
ws.agile.1PasswordAgent

… and start MongoDB with

lunchy start mongo

To see the full range of options, just type lunchy with no arguments:

Supported commands:

 ls [pattern]       Show the list of installed agents, with optional [pattern] filter
 start [pattern]    Start the first agent matching [pattern]
 stop [pattern]     Stop the first agent matching [pattern]
 restart [pattern]  Stop and start the first agent matching [pattern]
 status [pattern]   Show the PID and label for all agents, with optional [pattern] filter

Got an idea to improve upon Lunchy? Go ahead and fork the project

[Source on GitHub]


Discussion

Sign in or Join to comment or subscribe

Player art
  0:00 / 0:00