flombe 0.1.0.2
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 +4 -0
- data/.gitmodules +3 -0
- data/.rspec +2 -0
- data/Flombefile +9 -0
- data/Gemfile +10 -0
- data/Gemfile.lock +57 -0
- data/LICENSE +20 -0
- data/Rakefile +33 -0
- data/bin/flombe +17 -0
- data/config/rake.rb +38 -0
- data/cookbooks/homebrew/README.rdoc +8 -0
- data/cookbooks/homebrew/metadata.rb +8 -0
- data/cookbooks/homebrew/providers/homebrew.rb +39 -0
- data/cookbooks/homebrew/recipes/default.rb +42 -0
- data/cookbooks/homebrew/resources/homebrew.rb +14 -0
- data/cookbooks/mysql/README.rdoc +8 -0
- data/cookbooks/mysql/metadata.rb +6 -0
- data/cookbooks/mysql/recipes/default.rb +43 -0
- data/cookbooks/mysql/recipes/timezone.rb +10 -0
- data/cookbooks/redis/README.rdoc +8 -0
- data/cookbooks/redis/metadata.rb +6 -0
- data/cookbooks/redis/recipes/2.0.4.rb +24 -0
- data/cookbooks/redis/recipes/default.rb +7 -0
- data/cookbooks/rvm/CHANGELOG.md +19 -0
- data/cookbooks/rvm/README.md +564 -0
- data/cookbooks/rvm/Rakefile +35 -0
- data/cookbooks/rvm/attributes/default.rb +54 -0
- data/cookbooks/rvm/attributes/gem_package.rb +23 -0
- data/cookbooks/rvm/attributes/vagrant.rb +22 -0
- data/cookbooks/rvm/libraries/gem_package_monkeypatch.rb +34 -0
- data/cookbooks/rvm/libraries/helpers.rb +334 -0
- data/cookbooks/rvm/libraries/rvm_rubygems_package.rb +108 -0
- data/cookbooks/rvm/metadata.json +271 -0
- data/cookbooks/rvm/metadata.rb +95 -0
- data/cookbooks/rvm/providers/default_ruby.rb +46 -0
- data/cookbooks/rvm/providers/environment.rb +50 -0
- data/cookbooks/rvm/providers/gemset.rb +135 -0
- data/cookbooks/rvm/providers/global_gem.rb +99 -0
- data/cookbooks/rvm/providers/ruby.rb +100 -0
- data/cookbooks/rvm/providers/shell.rb +68 -0
- data/cookbooks/rvm/providers/wrapper.rb +58 -0
- data/cookbooks/rvm/recipes/default.rb +73 -0
- data/cookbooks/rvm/recipes/gem_package.rb +23 -0
- data/cookbooks/rvm/recipes/system.rb +69 -0
- data/cookbooks/rvm/recipes/user.rb +47 -0
- data/cookbooks/rvm/recipes/vagrant.rb +30 -0
- data/cookbooks/rvm/resources/default_ruby.rb +29 -0
- data/cookbooks/rvm/resources/environment.rb +29 -0
- data/cookbooks/rvm/resources/gem.rb +36 -0
- data/cookbooks/rvm/resources/gemset.rb +30 -0
- data/cookbooks/rvm/resources/global_gem.rb +33 -0
- data/cookbooks/rvm/resources/ruby.rb +29 -0
- data/cookbooks/rvm/resources/shell.rb +40 -0
- data/cookbooks/rvm/resources/wrapper.rb +32 -0
- data/cookbooks/rvm/templates/default/rvmrc.erb +14 -0
- data/cookbooks/rvm/templates/default/vagrant-chef-solo-wrapper.erb +23 -0
- data/cookbooks/utils/README.rdoc +8 -0
- data/cookbooks/utils/metadata.rb +6 -0
- data/cookbooks/utils/recipes/default.rb +10 -0
- data/cookbooks/utils/recipes/dotfiles.rb +21 -0
- data/cookbooks/utils/templates/default/dot.profile.erb +36 -0
- data/flombe.gemspec +28 -0
- data/lib/flombe/dsl.rb +66 -0
- data/lib/flombe.rb +107 -0
- data/spec/dsl_spec.rb +111 -0
- data/spec/flombe_spec.rb +30 -0
- data/spec/quality_spec.rb +11 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/helpers.rb +18 -0
- data/spec/support/matchers.rb +9 -0
- data/spec/support/path.rb +21 -0
- data/templates/chef_solo.erb +11 -0
- metadata +154 -0
data/.gitignore
ADDED
data/.gitmodules
ADDED
data/.rspec
ADDED
data/Flombefile
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
bunny (0.6.0)
|
5
|
+
chef (0.9.16)
|
6
|
+
bunny (>= 0.6.0)
|
7
|
+
erubis
|
8
|
+
extlib
|
9
|
+
highline
|
10
|
+
json (>= 1.4.4, <= 1.4.6)
|
11
|
+
mixlib-authentication (>= 1.1.0)
|
12
|
+
mixlib-cli (>= 1.1.0)
|
13
|
+
mixlib-config (>= 1.1.2)
|
14
|
+
mixlib-log (>= 1.2.0)
|
15
|
+
moneta
|
16
|
+
ohai (>= 0.5.7)
|
17
|
+
rest-client (>= 1.0.4, < 1.7.0)
|
18
|
+
uuidtools
|
19
|
+
diff-lcs (1.1.2)
|
20
|
+
erubis (2.7.0)
|
21
|
+
extlib (0.9.15)
|
22
|
+
highline (1.6.2)
|
23
|
+
json (1.4.6)
|
24
|
+
mime-types (1.16)
|
25
|
+
mixlib-authentication (1.1.4)
|
26
|
+
mixlib-log
|
27
|
+
mixlib-cli (1.2.0)
|
28
|
+
mixlib-config (1.1.2)
|
29
|
+
mixlib-log (1.3.0)
|
30
|
+
moneta (0.6.0)
|
31
|
+
ohai (0.6.4)
|
32
|
+
mixlib-cli
|
33
|
+
mixlib-config
|
34
|
+
mixlib-log
|
35
|
+
systemu
|
36
|
+
yajl-ruby
|
37
|
+
rest-client (1.6.1)
|
38
|
+
mime-types (>= 1.16)
|
39
|
+
rspec (2.6.0)
|
40
|
+
rspec-core (~> 2.6.0)
|
41
|
+
rspec-expectations (~> 2.6.0)
|
42
|
+
rspec-mocks (~> 2.6.0)
|
43
|
+
rspec-core (2.6.0)
|
44
|
+
rspec-expectations (2.6.0)
|
45
|
+
diff-lcs (~> 1.1.2)
|
46
|
+
rspec-mocks (2.6.0)
|
47
|
+
systemu (2.2.0)
|
48
|
+
uuidtools (2.1.2)
|
49
|
+
yajl-ruby (0.8.2)
|
50
|
+
|
51
|
+
PLATFORMS
|
52
|
+
ruby
|
53
|
+
|
54
|
+
DEPENDENCIES
|
55
|
+
chef (~> 0.9.10)
|
56
|
+
erubis
|
57
|
+
rspec (~> 2.6.0)
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2010-2011 BabyPips.com, LLC
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# Rakefile for Flombe
|
2
|
+
#
|
3
|
+
# Unless required by applicable law or agreed to in writing, software
|
4
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
5
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
6
|
+
# See the License for the specific language governing permissions and
|
7
|
+
# limitations under the License.
|
8
|
+
#
|
9
|
+
|
10
|
+
require 'fileutils'
|
11
|
+
require 'chef'
|
12
|
+
require File.join(File.dirname(__FILE__), 'config', 'rake')
|
13
|
+
|
14
|
+
load 'chef/tasks/chef_repo.rake'
|
15
|
+
|
16
|
+
namespace :flombe do
|
17
|
+
desc "Cleanses the environment, removing all the core junk that was installed."
|
18
|
+
task :clean do
|
19
|
+
if !`which brew`.chomp.empty?
|
20
|
+
prefix = `brew --prefix`.chomp
|
21
|
+
sh %{rm -rf #{prefix}/Cellar}
|
22
|
+
sh %{brew prune}
|
23
|
+
sh %{rm -rf #{prefix}/Library #{prefix}/.git #{prefix}/.gitignore #{prefix}/bin/brew #{prefix}/README.md #{prefix}/share/man/man1/brew}
|
24
|
+
end
|
25
|
+
|
26
|
+
if !`which rvm`.chomp.empty?
|
27
|
+
sh %{rvm implode}
|
28
|
+
sh %{gem uninstall rvm}
|
29
|
+
end
|
30
|
+
|
31
|
+
sh %{rm -rf ~/.flombe ~/.flombe.profile ~/.gemrc ~/.rdebugrc ~/.rvmrc ~/.bash_profile}
|
32
|
+
end
|
33
|
+
end
|
data/bin/flombe
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "rubygems"
|
3
|
+
require "optparse"
|
4
|
+
require "flombe"
|
5
|
+
|
6
|
+
ENV['HOME'] ||= '/Users/flombe'
|
7
|
+
ENV['USER'] ||= 'flombe'
|
8
|
+
ENV['EMAIL'] ||= 'flombe@gmail.com'
|
9
|
+
ENV['EDITOR'] ||= 'vim'
|
10
|
+
ENV['FULLNAME'] ||= 'Flom Be'
|
11
|
+
|
12
|
+
begin
|
13
|
+
Flombe::Runner.run
|
14
|
+
rescue Flombe::FlombeError => e
|
15
|
+
Flombe::Runner.warn e.message
|
16
|
+
exit 1
|
17
|
+
end
|
data/config/rake.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
###
|
2
|
+
# Company and SSL Details
|
3
|
+
###
|
4
|
+
|
5
|
+
# The company name - used for SSL certificates, and in srvious other places
|
6
|
+
COMPANY_NAME = ""
|
7
|
+
|
8
|
+
# The Country Name to use for SSL Certificates
|
9
|
+
SSL_COUNTRY_NAME = "US"
|
10
|
+
|
11
|
+
# The State Name to use for SSL Certificates
|
12
|
+
SSL_STATE_NAME = "Several"
|
13
|
+
|
14
|
+
# The Locality Name for SSL - typically, the city
|
15
|
+
SSL_LOCALITY_NAME = "Locality"
|
16
|
+
|
17
|
+
# What department?
|
18
|
+
SSL_ORGANIZATIONAL_UNIT_NAME = "Operations"
|
19
|
+
|
20
|
+
# The SSL contact email address
|
21
|
+
SSL_EMAIL_ADDRESS = ""
|
22
|
+
|
23
|
+
# License for new Cookbooks
|
24
|
+
# Can be :apachev2 or :none
|
25
|
+
NEW_COOKBOOK_LICENSE = :none
|
26
|
+
|
27
|
+
###
|
28
|
+
# Useful Extras (which you probably don't need to change)
|
29
|
+
###
|
30
|
+
|
31
|
+
# The top of the repository checkout
|
32
|
+
TOPDIR = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
33
|
+
|
34
|
+
# Where to store certificates generated with ssl_cert
|
35
|
+
CADIR = File.expand_path(File.join(TOPDIR, "certificates"))
|
36
|
+
|
37
|
+
# Where to store the mtime cache for the recipe/template syntax check
|
38
|
+
TEST_CACHE = File.expand_path(File.join(TOPDIR, ".rake_test_cache"))
|
@@ -0,0 +1,8 @@
|
|
1
|
+
maintainer "Corey Donohoe"
|
2
|
+
maintainer_email "atmos@atmos.org"
|
3
|
+
license "MIT"
|
4
|
+
description "Installs/Configures homebrew"
|
5
|
+
long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
|
6
|
+
version "0.1.0"
|
7
|
+
provides "homebrew::dbs"
|
8
|
+
provides "homebrew::misc"
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'pp'
|
2
|
+
require 'chef/provider'
|
3
|
+
|
4
|
+
class Chef
|
5
|
+
class Provider
|
6
|
+
class Package
|
7
|
+
class Homebrew < ::Chef::Provider::Package
|
8
|
+
PREFIX = "/usr/local"
|
9
|
+
HOMEBREW = "#{PREFIX}/bin/brew"
|
10
|
+
|
11
|
+
def latest_version_for(name)
|
12
|
+
%x{#{HOMEBREW} info #{name}| head -n1 | awk '{print $2}'}.chomp
|
13
|
+
end
|
14
|
+
|
15
|
+
def load_current_resource
|
16
|
+
@current_resource = Chef::Resource::Homebrew.new(@new_resource.name)
|
17
|
+
@current_resource.package_name(@new_resource.name)
|
18
|
+
@candidate_version = latest_version_for(@new_resource.name)
|
19
|
+
@current_resource
|
20
|
+
end
|
21
|
+
|
22
|
+
def install_package(name, version)
|
23
|
+
run_brew_command("#{HOMEBREW} install #{name}")
|
24
|
+
end
|
25
|
+
|
26
|
+
def remove_package(name, version)
|
27
|
+
run_brew_command("#{HOMEBREW} uninstall #{name}")
|
28
|
+
end
|
29
|
+
|
30
|
+
def run_brew_command(command)
|
31
|
+
Chef::Log.debug(command)
|
32
|
+
run_command_with_systems_locale(
|
33
|
+
:command => command
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: homebrew
|
3
|
+
# Recipe:: homebrew
|
4
|
+
#
|
5
|
+
|
6
|
+
root = File.expand_path(File.join(File.dirname(__FILE__), ".."))
|
7
|
+
|
8
|
+
require root + '/resources/homebrew'
|
9
|
+
require root + '/providers/homebrew'
|
10
|
+
require 'etc'
|
11
|
+
|
12
|
+
directory "#{ENV['HOME']}/.flombe" do
|
13
|
+
action :create
|
14
|
+
end
|
15
|
+
|
16
|
+
execute "install homebrew" do
|
17
|
+
command "ruby -e \"$(curl -fsSLk https://gist.github.com/raw/323731/install_homebrew.rb)\""
|
18
|
+
cwd "/usr/local"
|
19
|
+
not_if "test -e /usr/local/bin/brew"
|
20
|
+
end
|
21
|
+
|
22
|
+
homebrew "git"
|
23
|
+
|
24
|
+
script "ensure the git remote is installed" do
|
25
|
+
interpreter "bash"
|
26
|
+
code <<-EOS
|
27
|
+
cd /usr/local
|
28
|
+
if [ ! -d ./.git ]; then
|
29
|
+
git init
|
30
|
+
git remote add origin git://github.com/mxcl/homebrew.git
|
31
|
+
git fetch origin
|
32
|
+
git reset --hard origin/master
|
33
|
+
fi
|
34
|
+
EOS
|
35
|
+
end
|
36
|
+
|
37
|
+
script "updating homebrew from github" do
|
38
|
+
interpreter "bash"
|
39
|
+
code <<-EOS
|
40
|
+
/usr/local/bin/brew update >> ~/.flombe/brew.log 2>&1
|
41
|
+
EOS
|
42
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'chef/resource/script'
|
2
|
+
|
3
|
+
class Chef
|
4
|
+
class Resource
|
5
|
+
class Homebrew < ::Chef::Resource::Package
|
6
|
+
def initialize(name, run_context = nil)
|
7
|
+
super(name, run_context)
|
8
|
+
@resource_name = :homebrew
|
9
|
+
@provider = Chef::Provider::Package::Homebrew
|
10
|
+
@allowed_actions = [ :install, :remove ]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: mysql
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
|
6
|
+
require_recipe 'homebrew'
|
7
|
+
|
8
|
+
homebrew 'mysql'
|
9
|
+
|
10
|
+
execute "initialize MySQL database" do
|
11
|
+
command <<-EOS
|
12
|
+
unset TMPDIR
|
13
|
+
mysql_install_db --user=#{ENV['USER']} --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
|
14
|
+
EOS
|
15
|
+
not_if "test -d /usr/local/var/mysql/mysql"
|
16
|
+
end
|
17
|
+
|
18
|
+
gem_package "mysql" do
|
19
|
+
action :install
|
20
|
+
end
|
21
|
+
|
22
|
+
Chef::Log.info("Configuring mysql to automatically start on login")
|
23
|
+
|
24
|
+
destination_plist = "#{ENV['HOME']}/Library/LaunchAgents/com.mysql.mysqld.plist"
|
25
|
+
plist_path = "$(brew --prefix mysql)/com.mysql.mysqld.plist"
|
26
|
+
|
27
|
+
execute "unloading existing plist" do
|
28
|
+
command "launchctl unload -w -F #{destination_plist}"
|
29
|
+
only_if "test -f #{destination_plist}"
|
30
|
+
end
|
31
|
+
|
32
|
+
execute "adding plist to login" do
|
33
|
+
command <<-EOS
|
34
|
+
mkdir -p #{ENV['HOME']}/Library/LaunchAgents
|
35
|
+
cp -f #{plist_path} #{destination_plist}
|
36
|
+
launchctl load -w -F #{destination_plist}
|
37
|
+
EOS
|
38
|
+
end
|
39
|
+
|
40
|
+
execute "sleeping to wait for mysql to come online" do
|
41
|
+
command "sleep 5"
|
42
|
+
not_if "mysqladmin -uroot status"
|
43
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: redis
|
3
|
+
# Recipe:: 2.0.4
|
4
|
+
#
|
5
|
+
|
6
|
+
require_recipe 'homebrew'
|
7
|
+
|
8
|
+
execute "ensure checking out of redis-2.0.4 branch" do
|
9
|
+
command <<-EOS
|
10
|
+
cd #{Chef::Provider::Package::Homebrew::PREFIX}
|
11
|
+
git checkout -b redis-2.0.4 29f618bec65c05ab1a00d8670fc320dae33f5a55
|
12
|
+
EOS
|
13
|
+
not_if "git branch | grep -q redis-2.0.4"
|
14
|
+
end
|
15
|
+
|
16
|
+
homebrew 'redis'
|
17
|
+
|
18
|
+
execute "ensure checking out of master branch after redis install" do
|
19
|
+
command <<-EOS
|
20
|
+
cd #{Chef::Provider::Package::Homebrew::PREFIX}
|
21
|
+
git checkout master
|
22
|
+
git branch -d redis-2.0.4
|
23
|
+
EOS
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
## 0.7.0 (May 14, 2011)
|
2
|
+
|
3
|
+
* Revamp and update README.md. [GH-3]
|
4
|
+
* Add CHANGELOG.md. [GH-5]
|
5
|
+
* Attr rvm/upgrade accepts "none", false and nil as same value. [GH-19]
|
6
|
+
* Update rvm/install_rubies attr to "true"/"false".
|
7
|
+
* Update rvm/skip_docs_on_install attr to rvm/rvm_gem_options.
|
8
|
+
* Speed up install by disabling RDOC generation. [GH-13]
|
9
|
+
* New experimental recipe gem_package which patches gem_package resource.
|
10
|
+
* Add rvm_global_gem resource.
|
11
|
+
* Refactor of rvm_gem provider to leverage Chef::Provider::Package::Rubygems.
|
12
|
+
* Allow no default RVM ruby (i.e. use system ruby). [GH-14]
|
13
|
+
* Update RVM install to use SSL URL. [GH-12]
|
14
|
+
* Now /etc/rvmrc has export for rvm/rvmrc key/value pairs.
|
15
|
+
|
16
|
+
## Previous
|
17
|
+
|
18
|
+
The changelog began with version 0.6.0 so any changes prior to that can be
|
19
|
+
seen by checking the tagged releases and reading git commit messages.
|