Manage Mac development boxes with love (and Puppet).
-
Run on a nonstandard port, usually default port + 1000 or 10000.
-
Install with a custom Boxen homebrew formula.
-
Suffix the Homebrew package's version, starting with
-boxen1. -
Run as a launchd service in the
devnamespace, e.g.,dev.dnsmasq. -
Store config, data, and log files in
$BOXEN_HOME/{config,data,log}. This will normally require customization of a service's Homebrew formula.
Sometimes it's not possible to follow these rules, but try hard.
We use a totally awful hack to do from-the-cli project installs of projects. We create a file in "$BOXEN_HOME/repodir" called .projects, with a single line. That line is made up of projects separated by commas. We then read that into a Puppet fact in Puppet-land, and that checks for classes that match those project names, and includes them in the catalog.
We can't pass a FACTER_ env var because sudo has env_reset
and we can't just modify the sudoers file due to a chicken-egg problem.
-
All hooks must be in the namespace
Boxen::Hook::MyThing. -
All hooks must subclass from
Boxen::Hook -
All hooks must provide a private instance method
required_environment_variablesthat returns an array with at least one entry. -
All hooks must provide a private instance method
#call.
Use the OS X system Ruby (2.0 or newer). Run script/tests often. Open PR's.
Use the CI.
Use Issues or #boxen on irc.freenode.net.