Skip to content
This repository has been archived by the owner. It is now read-only.
Manage Mac development boxes with love (and Puppet).
Branch: master
Clone or download
Latest commit a11fcba Mar 26, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
script
src return skip() and cleanup keychain helper Sep 4, 2013
test
.gitignore
.travis.yml Use latest versions from OS X 10.13 Oct 25, 2017
Gemfile
LICENSE
README.md
boxen.gemspec

README.md

Boxen Build Status

Manage Mac development boxes with love (and Puppet).

Rules for Services

  1. Run on a nonstandard port, usually default port + 1000 or 10000.

  2. Install with a custom Boxen homebrew formula.

  3. Suffix the Homebrew package's version, starting with -boxen1.

  4. Run as a launchd service in the dev namespace, e.g., dev.dnsmasq.

  5. 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

  1. All hooks must be in the namespace Boxen::Hook::MyThing.

  2. All hooks must subclass from Boxen::Hook

  3. All hooks must provide a private instance method required_environment_variables that returns an array with at least one entry.

  4. 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.

You can’t perform that action at this time.