Manage Mac development boxes with love (and Puppet).
Rules for Services
-
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
dev
namespace, 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.
Projects from the CLI
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.
Hooks
-
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_variables
that returns an array with at least one entry. -
All hooks must provide a private instance method
#call
.
Contributing
Use the OS X system Ruby (2.0 or newer). Run script/tests
often. Open PR's.
Use the CI.
Halp!
Use Issues or #boxen on irc.freenode.net.