mirror of
https://github.com/zhigang1992/boxen.git
synced 2026-01-12 17:12:46 +08:00
47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
# Boxen [](https://travis-ci.org/boxen/boxen)
|
|
|
|
Manage Mac development boxes with love (and Puppet).
|
|
|
|
## Rules for Services
|
|
|
|
0. Run on a nonstandard port, usually default port + 1000 or 10000.
|
|
|
|
0. Install with a custom Boxen homebrew formula.
|
|
|
|
0. Suffix the Homebrew package's version, starting with `-boxen1`.
|
|
|
|
0. Run as a launchd service in the `dev` namespace, e.g.,
|
|
`dev.dnsmasq`.
|
|
|
|
0. 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
|
|
|
|
0. All hooks must be in the namespace `Boxen::Hook::MyThing`.
|
|
|
|
0. All hooks must subclass from `Boxen::Hook`
|
|
|
|
0. All hooks must provide a private instance method `required_environment_variables` that returns an array with at least one entry.
|
|
|
|
0. All hooks must provide a private instance method `#call`.
|
|
|
|
## Contributing
|
|
|
|
Use the OS X system Ruby (1.8.7). Run `script/tests` often. Open PR's.
|
|
Use the CI.
|