boxen 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore CHANGED
@@ -1,5 +1,7 @@
1
1
  /.bundle
2
+ /.env.local.rb
2
3
  /.rbenv-version
3
4
  /Gemfile.lock
4
5
  /bin
5
6
  /boxen-*.gem
7
+ /puppet
data/README.md CHANGED
@@ -1,7 +1,45 @@
1
1
  # Boxen
2
2
 
3
- Manage development boxes with love (and Puppet).
3
+ Manage Mac development boxes with love (and Puppet).
4
+
5
+ ## Rules for Services
6
+
7
+ 0. Run on a nonstandard port, usually default port + 1000 or 10000.
8
+
9
+ 0. Install with a custom Boxen homebrew formula.
10
+
11
+ 0. Suffix the Homebrew package's version, starting with `-boxen1`.
12
+
13
+ 0. Run as a launchd service in the `com.boxen` namespace, e.g.,
14
+ `com.boxen.dnsmasq`.
15
+
16
+ 0. Store config, data, and log files in
17
+ `$BOXEN_HOME/{config,data,log}. This will normally require
18
+ customization of a service's Homebrew formula.
19
+
20
+ Sometimes it's not possible to follow these rules, but try hard.
4
21
 
5
22
  ## Contributing
6
23
 
7
24
  Use the OS X system Ruby (1.8.7). Run `script/tests` often. Open PR's.
25
+
26
+ ### Managing Boxen's Puppet Modules
27
+
28
+ There are roughly nine million puppet modules under the
29
+ [Boxen GitHub organization][boxen]. To clone them all, run
30
+ `script/sync-puppet`. This script will make sure every
31
+ `boxen/puppet-*` repo is cloned under the `./puppet`, which is ignored
32
+ by Git.
33
+
34
+ [boxen]: https://github.com/boxen
35
+
36
+ Because it uses the GitHub API, `script/sync-puppet` requires the
37
+ `GITHUB_LOGIN` and `GITHUB_PASSWORD` environment variables to be set.
38
+ If you don't want to provide them every time, you can set them in
39
+ `.env.local.rb`, which is also ignored by Git. For example, your
40
+ `.env.local.rb` might look like this:
41
+
42
+ ```ruby
43
+ ENV["GITHUB_LOGIN"] = "jbarnette"
44
+ ENV["GITHUB_PASSWORD"] = "adventures"
45
+ ```
data/boxen.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "boxen"
5
- gem.version = "0.2.3"
5
+ gem.version = "0.2.4"
6
6
  gem.authors = ["John Barnette", "Will Farrington"]
7
7
  gem.email = ["jbarnette@github.com", "wfarr@github.com"]
8
8
  gem.description = "Manage Mac development boxes with love (and Puppet)."
@@ -12,11 +12,15 @@ module Boxen
12
12
  @config = config
13
13
  end
14
14
 
15
+ def caffeinate
16
+ "/usr/bin/caffeinate -dis"
17
+ end
18
+
15
19
  def command
16
20
  manifest = "#{config.repodir}/manifests/site.pp"
17
21
  puppet = "#{config.repodir}/bin/puppet"
18
22
 
19
- [puppet, "apply", flags, manifest].flatten
23
+ [caffeinate, puppet, "apply", flags, manifest].flatten
20
24
  end
21
25
 
22
26
  def flags
@@ -69,7 +73,9 @@ module Boxen
69
73
 
70
74
  ENV["GITHUB_API_TOKEN"] = config.token
71
75
 
72
- unless system librarian, "install", "--path=#{config.repodir}/shared"
76
+ # caffeinate ensures the system will not sleep during a run
77
+ unless system caffeinate,
78
+ librarian, "install", "--path=#{config.repodir}/shared"
73
79
  abort "Can't run Puppet, fetching dependencies with librarian failed."
74
80
  end
75
81
  end
data/lib/facter/boxen.rb CHANGED
@@ -3,7 +3,7 @@ require "boxen/config"
3
3
 
4
4
  config = Boxen::Config.load
5
5
  facts = {}
6
- factsdir = File.join config.homedir, "config", "facts"
6
+ factsdir = "#{config.homedir}/config/facts"
7
7
 
8
8
  facts["github_login"] = config.login
9
9
  facts["github_email"] = config.email
@@ -13,7 +13,8 @@ facts["github_token"] = config.token
13
13
  facts["boxen_home"] = config.homedir
14
14
  facts["boxen_srcdir"] = config.srcdir
15
15
  facts["boxen_repodir"] = config.repodir
16
- facts["luser"] = config.user
16
+ facts["boxen_user"] = config.user
17
+ facts["luser"] = config.user # this is goin' away
17
18
 
18
19
  Dir["#{config.homedir}/config/facts/*.json"].each do |file|
19
20
  facts.merge! JSON.parse File.read file
data/script/release CHANGED
@@ -9,9 +9,16 @@ cd $(dirname "$0")/..
9
9
 
10
10
  # Build a new gem archive.
11
11
 
12
- rm boxen-*.gem
12
+ rm -rf boxen-*.gem
13
13
  gem build -q boxen.gemspec
14
14
 
15
+ # Make sure we're on the master branch.
16
+
17
+ (git branch | grep '* master') || {
18
+ echo "Only release from the master branch."
19
+ exit 1
20
+ }
21
+
15
22
  # Figure out what version we're releasing.
16
23
 
17
24
  tag=v`ls boxen-*.gem | sed 's/^boxen-\(.*\)\.gem$/\1/'`
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ # Make sure all boxen/puppet-* repos are cloned under ./puppet.
3
+
4
+ require "fileutils"
5
+ require "pathname"
6
+
7
+ # Put us where we belong, in the root dir of boxen.
8
+
9
+ Dir.chdir Pathname.new(__FILE__).realpath + "../.."
10
+
11
+ # Load the local env in case creds are set there.
12
+
13
+ load ".env.local.rb" if File.file? ".env.local.rb"
14
+
15
+ # Make sure we're up to date.
16
+
17
+ abort "Bootstrap failed." unless system "script/bootstrap"
18
+
19
+ require "bundler/setup"
20
+ require "octokit"
21
+
22
+ unless ENV["GITHUB_LOGIN"] && ENV["GITHUB_PASSWORD"]
23
+ abort "Please set the GITHUB_LOGIN and GITHUB_PASSWORD env vars."
24
+ end
25
+
26
+ api = Octokit::Client.new \
27
+ :login => ENV["GITHUB_LOGIN"], :password => ENV["GITHUB_PASSWORD"]
28
+
29
+ # Gotta have a ./puppet dir.
30
+
31
+ FileUtils.mkdir_p "puppet"
32
+
33
+ # Clone boxen/puppet-* unless we have it already.
34
+
35
+ api.organization_repositories("boxen").each do |repo|
36
+ next unless /^puppet-/ =~ repo.name
37
+
38
+ unless File.directory? dest = "puppet/#{repo.name}"
39
+ system "git", "clone", repo.clone_url, dest
40
+ end
41
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 3
9
- version: 0.2.3
8
+ - 4
9
+ version: 0.2.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - John Barnette
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-03 00:00:00 -07:00
18
+ date: 2012-10-04 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -175,6 +175,7 @@ files:
175
175
  - lib/facter/boxen.rb
176
176
  - script/bootstrap
177
177
  - script/release
178
+ - script/sync-puppet
178
179
  - script/tests
179
180
  - test/boxen/test.rb
180
181
  - test/boxen_check_test.rb