dhill-sprinkle 0.3.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.gitignore +3 -0
  2. data/CREDITS +33 -0
  3. data/Gemfile +4 -0
  4. data/MIT-LICENSE +20 -0
  5. data/README.markdown +242 -0
  6. data/Rakefile +2 -0
  7. data/VERSION +1 -0
  8. data/bin/sprinkle +95 -0
  9. data/examples/packages/build_essential.rb +9 -0
  10. data/examples/packages/databases/mysql.rb +13 -0
  11. data/examples/packages/databases/sqlite3.rb +16 -0
  12. data/examples/packages/phusion.rb +55 -0
  13. data/examples/packages/ruby/rails.rb +9 -0
  14. data/examples/packages/ruby/ruby.rb +17 -0
  15. data/examples/packages/ruby/rubygems.rb +17 -0
  16. data/examples/packages/scm/git.rb +11 -0
  17. data/examples/packages/scm/subversion.rb +4 -0
  18. data/examples/packages/servers/apache.rb +15 -0
  19. data/examples/rails/README +15 -0
  20. data/examples/rails/deploy.rb +2 -0
  21. data/examples/rails/packages/database.rb +9 -0
  22. data/examples/rails/packages/essential.rb +9 -0
  23. data/examples/rails/packages/rails.rb +29 -0
  24. data/examples/rails/packages/scm.rb +11 -0
  25. data/examples/rails/packages/search.rb +11 -0
  26. data/examples/rails/packages/server.rb +28 -0
  27. data/examples/rails/rails.rb +73 -0
  28. data/examples/sprinkle/sprinkle.rb +38 -0
  29. data/lib/sprinkle.rb +3 -0
  30. data/lib/sprinkle/actors/actors.rb +17 -0
  31. data/lib/sprinkle/actors/capistrano.rb +146 -0
  32. data/lib/sprinkle/actors/local.rb +37 -0
  33. data/lib/sprinkle/actors/ssh.rb +177 -0
  34. data/lib/sprinkle/actors/vlad.rb +83 -0
  35. data/lib/sprinkle/configurable.rb +31 -0
  36. data/lib/sprinkle/deployment.rb +73 -0
  37. data/lib/sprinkle/extensions/arbitrary_options.rb +10 -0
  38. data/lib/sprinkle/extensions/array.rb +5 -0
  39. data/lib/sprinkle/extensions/blank_slate.rb +5 -0
  40. data/lib/sprinkle/extensions/dsl_accessor.rb +15 -0
  41. data/lib/sprinkle/extensions/string.rb +10 -0
  42. data/lib/sprinkle/extensions/symbol.rb +7 -0
  43. data/lib/sprinkle/installers/apt.rb +52 -0
  44. data/lib/sprinkle/installers/binary.rb +46 -0
  45. data/lib/sprinkle/installers/bsd_port.rb +33 -0
  46. data/lib/sprinkle/installers/deb.rb +41 -0
  47. data/lib/sprinkle/installers/freebsd_pkg.rb +37 -0
  48. data/lib/sprinkle/installers/freebsd_portinstall.rb +36 -0
  49. data/lib/sprinkle/installers/gem.rb +64 -0
  50. data/lib/sprinkle/installers/install_package.rb +79 -0
  51. data/lib/sprinkle/installers/installer.rb +123 -0
  52. data/lib/sprinkle/installers/mac_port.rb +38 -0
  53. data/lib/sprinkle/installers/noop.rb +20 -0
  54. data/lib/sprinkle/installers/openbsd_pkg.rb +47 -0
  55. data/lib/sprinkle/installers/opensolaris_pkg.rb +43 -0
  56. data/lib/sprinkle/installers/push_text.rb +45 -0
  57. data/lib/sprinkle/installers/rake.rb +37 -0
  58. data/lib/sprinkle/installers/replace_text.rb +45 -0
  59. data/lib/sprinkle/installers/rpm.rb +37 -0
  60. data/lib/sprinkle/installers/runner.rb +18 -0
  61. data/lib/sprinkle/installers/smart.rb +29 -0
  62. data/lib/sprinkle/installers/source.rb +201 -0
  63. data/lib/sprinkle/installers/transfer.rb +178 -0
  64. data/lib/sprinkle/installers/user.rb +15 -0
  65. data/lib/sprinkle/installers/yum.rb +37 -0
  66. data/lib/sprinkle/installers/zypper.rb +43 -0
  67. data/lib/sprinkle/package.rb +326 -0
  68. data/lib/sprinkle/policy.rb +125 -0
  69. data/lib/sprinkle/script.rb +23 -0
  70. data/lib/sprinkle/verifiers/apt.rb +21 -0
  71. data/lib/sprinkle/verifiers/directory.rb +16 -0
  72. data/lib/sprinkle/verifiers/executable.rb +53 -0
  73. data/lib/sprinkle/verifiers/file.rb +34 -0
  74. data/lib/sprinkle/verifiers/package.rb +26 -0
  75. data/lib/sprinkle/verifiers/process.rb +21 -0
  76. data/lib/sprinkle/verifiers/rpm.rb +21 -0
  77. data/lib/sprinkle/verifiers/ruby.rb +25 -0
  78. data/lib/sprinkle/verifiers/symlink.rb +30 -0
  79. data/lib/sprinkle/verify.rb +114 -0
  80. data/lib/sprinkle/version.rb +3 -0
  81. data/script/console +8 -0
  82. data/script/destroy +14 -0
  83. data/script/generate +14 -0
  84. data/spec/spec.opts +1 -0
  85. data/spec/spec_helper.rb +17 -0
  86. data/spec/sprinkle/actors/capistrano_spec.rb +265 -0
  87. data/spec/sprinkle/actors/local_spec.rb +29 -0
  88. data/spec/sprinkle/configurable_spec.rb +46 -0
  89. data/spec/sprinkle/deployment_spec.rb +80 -0
  90. data/spec/sprinkle/extensions/array_spec.rb +19 -0
  91. data/spec/sprinkle/extensions/string_spec.rb +21 -0
  92. data/spec/sprinkle/installers/apt_spec.rb +70 -0
  93. data/spec/sprinkle/installers/bsd_port_spec.rb +42 -0
  94. data/spec/sprinkle/installers/freebsd_pkg_spec.rb +49 -0
  95. data/spec/sprinkle/installers/freebsd_portinstall_spec.rb +42 -0
  96. data/spec/sprinkle/installers/gem_spec.rb +107 -0
  97. data/spec/sprinkle/installers/installer_spec.rb +151 -0
  98. data/spec/sprinkle/installers/mac_port_spec.rb +42 -0
  99. data/spec/sprinkle/installers/noop_spec.rb +23 -0
  100. data/spec/sprinkle/installers/openbsd_pkg_spec.rb +49 -0
  101. data/spec/sprinkle/installers/opensolaris_pkg_spec.rb +49 -0
  102. data/spec/sprinkle/installers/push_text_spec.rb +66 -0
  103. data/spec/sprinkle/installers/rake_spec.rb +29 -0
  104. data/spec/sprinkle/installers/replace_text_spec.rb +45 -0
  105. data/spec/sprinkle/installers/rpm_spec.rb +50 -0
  106. data/spec/sprinkle/installers/runner_spec.rb +31 -0
  107. data/spec/sprinkle/installers/source_spec.rb +371 -0
  108. data/spec/sprinkle/installers/transfer_spec.rb +98 -0
  109. data/spec/sprinkle/installers/yum_spec.rb +49 -0
  110. data/spec/sprinkle/installers/zypper_spec.rb +49 -0
  111. data/spec/sprinkle/package_spec.rb +474 -0
  112. data/spec/sprinkle/policy_spec.rb +126 -0
  113. data/spec/sprinkle/script_spec.rb +51 -0
  114. data/spec/sprinkle/sprinkle_spec.rb +25 -0
  115. data/spec/sprinkle/verify_spec.rb +173 -0
  116. data/sprinkle-0.3.3.1.gem +0 -0
  117. data/sprinkle.gemspec +26 -0
  118. metadata +281 -0
@@ -0,0 +1,126 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Sprinkle::Policy do
4
+ include Sprinkle::Policy
5
+
6
+ before do
7
+ @name = 'a policy'
8
+ end
9
+
10
+ describe 'when created' do
11
+
12
+ it 'should be invalid without a name' do
13
+ lambda { policy nil }.should raise_error
14
+ end
15
+
16
+ it 'should be invalid without role definitions' do
17
+ lambda { policy @name do; end }.should raise_error
18
+ lambda { policy @name, :roles => :app do; end }.should_not raise_error
19
+ end
20
+
21
+ it 'should optionally accept package dependencies' do
22
+ p = policy @name, :roles => :app do; end
23
+ p.should respond_to(:requires)
24
+ p.requires :appserver
25
+ p.packages.should == [ :appserver ]
26
+ end
27
+
28
+ it 'should optionally accept package dependencies with versions' do
29
+ p = policy @name, :roles => :app do; end
30
+ p.requires :appserver, :version => 2
31
+ p.packages.should == [ :appserver ]
32
+ pending 'requires version checking implementation'
33
+ end
34
+
35
+ it 'should add itself to the global policy list' do
36
+ sz = Sprinkle::Policy::POLICIES.size
37
+ p = policy @name, :roles => :app do; end
38
+ Sprinkle::Policy::POLICIES.size.should == sz + 1
39
+ Sprinkle::Policy::POLICIES.last.should == p
40
+ end
41
+
42
+ end
43
+
44
+ describe 'with packages' do
45
+ include Sprinkle::Package
46
+
47
+ before do
48
+ @deployment = mock(Sprinkle::Deployment)
49
+ Sprinkle::Package::PACKAGES.clear # reset full package list before each spec is run
50
+
51
+ @a = package :a do; requires :b; requires :c; end
52
+ @b = package :b, :provides => :xyz do; end
53
+ @c = package :c, :provides => :abc do; end
54
+ @d = package :d, :provides => :abc do; end
55
+
56
+ @policy = policy :test, :roles => :app do; requires :a; end
57
+ $terminal.stub!(:choose).and_return(:c) # stub out highline asking questions
58
+ end
59
+
60
+ describe 'when applying' do
61
+ include Sprinkle::Package
62
+
63
+ it 'should determine the packages to install via the hierarchy dependency tree of each package in the policy' do
64
+ @a.should_receive(:process).and_return
65
+ @b.should_receive(:process).and_return
66
+ @c.should_receive(:process).and_return
67
+ @d.should_not_receive(:process)
68
+ end
69
+
70
+ it 'should normalize (ie remove duplicates from) the installation order of all packages including dependencies' do
71
+ @e = package :e do; requires :b; end
72
+ @policy.requires :e
73
+
74
+ @a.should_receive(:process).once.and_return
75
+ @b.should_receive(:process).once.and_return
76
+ @c.should_receive(:process).once.and_return
77
+ @d.should_not_receive(:process)
78
+ @e.should_receive(:process).once.and_return
79
+ end
80
+ end
81
+
82
+ describe 'containing package dependencies with versions' do
83
+
84
+ it 'should be invalid if the specified package does not exist'
85
+ it 'should ignore any packages of the same name that have other versions'
86
+ it 'should select the correct package version when applying'
87
+
88
+ end
89
+
90
+ describe 'containing virtual packages' do
91
+
92
+ it 'should automatically select a concrete package implementation for a virtual one when there exists only one possible selection' do
93
+ @policy = policy :virtual, :roles => :app do; requires :xyz; end
94
+ Sprinkle::Package::PACKAGES[:xyz].should == [ @b ]
95
+ end
96
+
97
+ it 'should ask the user for the concrete package implementation to use for a virtual one when more than one possible choice exists' do
98
+ @policy = policy :virtual, :roles => :app do; requires :abc; end
99
+ Sprinkle::Package::PACKAGES[:abc].should include(@c)
100
+ Sprinkle::Package::PACKAGES[:abc].should include(@d)
101
+ $terminal.should_receive(:choose).and_return(:c)
102
+ end
103
+
104
+ end
105
+
106
+ after do
107
+ @policy.process(@deployment)
108
+ end
109
+ end
110
+ end
111
+
112
+ describe Sprinkle::Policy, 'with missing packages' do
113
+
114
+ before do
115
+ @deployment = mock(Sprinkle::Deployment)
116
+ Sprinkle::Package::PACKAGES.clear # reset full package list before each spec is run
117
+
118
+ @policy = policy :test, :roles => :app do; requires :z; end
119
+ $terminal.stub!(:choose).and_return(:c) # stub out highline asking questions
120
+ end
121
+
122
+ it 'should raise an error if a package is missing' do
123
+ lambda { @policy.process(@deployment) }.should raise_error
124
+ end
125
+
126
+ end
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Sprinkle::Script, 'class' do
4
+
5
+ it 'should define a entry point into the system' do
6
+ Sprinkle::Script.should respond_to(:sprinkle)
7
+ end
8
+
9
+ end
10
+
11
+ describe Sprinkle::Script, 'when given a script' do
12
+
13
+ before do
14
+ @script = 'script'
15
+ @filename = 'filename'
16
+
17
+ @sprinkle = Sprinkle::Script.new
18
+ Sprinkle::Script.stub!(:new).and_return(@sprinkle)
19
+ end
20
+
21
+ it 'should create a new sprinkle instance' do
22
+ Sprinkle::Script.should_receive(:new).and_return(@sprinkle)
23
+ Sprinkle::Script.sprinkle @script
24
+ end
25
+
26
+ it 'should evaulate the sprinkle script against the instance' do
27
+ @sprinkle.should_receive(:instance_eval).and_return
28
+ Sprinkle::Script.sprinkle @script
29
+ end
30
+
31
+ it 'should specify the filename if given for line number errors' do
32
+ @sprinkle.should_receive(:instance_eval).with(@script, @filename).and_return
33
+ Sprinkle::Script.sprinkle @script, @filename
34
+ end
35
+
36
+ it 'should specify a filename of __SCRIPT__ by default if none is provided' do
37
+ @sprinkle.should_receive(:instance_eval).with(@script, '__SCRIPT__').and_return
38
+ Sprinkle::Script.sprinkle @script
39
+ end
40
+
41
+ it 'should automatically run in production mode by default' do
42
+ @sprinkle.should_receive(:instance_eval).with(@script, '__SCRIPT__').and_return
43
+ Sprinkle::Script.sprinkle @script
44
+ end
45
+
46
+ it 'should ask the Sprinkle instance to process the data from the script' do
47
+ @sprinkle.should_receive(:sprinkle)
48
+ Sprinkle::Script.sprinkle @script
49
+ end
50
+
51
+ end
@@ -0,0 +1,25 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Sprinkle do
4
+
5
+ it 'should automatically extend Object to support package, policy and deployment DSL keywords' do
6
+ %w( package policy deployment ).each do |keyword|
7
+ Object.should respond_to(keyword.to_sym)
8
+ end
9
+ end
10
+
11
+ it 'should default to production mode' do
12
+ Sprinkle::OPTIONS[:testing].should be_false
13
+ end
14
+
15
+ it 'should automatically create a logger object on Kernel' do
16
+ Object.should respond_to(:logger)
17
+ logger.should_not be_nil
18
+ logger.class.should == ActiveSupport::BufferedLogger
19
+ end
20
+
21
+ it 'should create a logger of level INFO' do
22
+ logger.level.should == ActiveSupport::BufferedLogger::Severity::INFO
23
+ end
24
+
25
+ end
@@ -0,0 +1,173 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Sprinkle::Verify do
4
+ before do
5
+ @name = :package
6
+ @package = package @name do
7
+ gem 'nonexistent'
8
+ verify 'moo' do
9
+ # Check a file exists
10
+ has_file 'my_file.txt'
11
+
12
+ # Check that a file contains a substring
13
+ file_contains 'my_file.txt', 'A sunny day on the lower east-side'
14
+
15
+ # Check a directory exists
16
+ has_directory 'mydir'
17
+
18
+ # Check a symlink exists
19
+ has_symlink 'mypointer'
20
+
21
+ # Check a symlink points to a certain file
22
+ has_symlink 'mypointer', 'myfile'
23
+
24
+ # Check if an executable exists
25
+ has_executable '/usr/bin/ruby'
26
+
27
+ # Check if a global executable exists (in PATH)
28
+ has_executable 'rails'
29
+
30
+ # Check for a process
31
+ has_process 'httpd'
32
+
33
+ # Check that ruby can include files
34
+ ruby_can_load 'a', 'b', 'c'
35
+
36
+ # Check that a gem exists
37
+ has_gem 'rails'
38
+ has_gem 'rails', '2.1.0'
39
+
40
+ # Check for a certain RPM package
41
+ has_rpm 'ntp'
42
+ end
43
+ end
44
+ @verification = @package.verifications[0]
45
+ @delivery = mock(Sprinkle::Deployment, :process => true)
46
+ @verification.delivery = @delivery
47
+ end
48
+
49
+ describe 'when created' do
50
+ it 'should raise error without a block' do
51
+ lambda { Verify.new(nil, '') }.should raise_error
52
+ end
53
+ end
54
+
55
+ describe 'with checks' do
56
+ it 'should do a "test -f" on the has_file check' do
57
+ @verification.commands.should include('test -f my_file.txt')
58
+ end
59
+
60
+ it 'should do a grep to see if a file contains a text string' do
61
+ @verification.commands.should include("grep 'A sunny day on the lower east-side' my_file.txt")
62
+ end
63
+
64
+ it 'should do a "test -d" on the has_directory check' do
65
+ @verification.commands.should include('test -d mydir')
66
+ end
67
+
68
+ it 'should do a "test -L" to check something is a symbolic link' do
69
+ @verification.commands.should include('test -L mypointer')
70
+ end
71
+
72
+ it 'should do a test equality to check a symlink points to a specific file' do
73
+ @verification.commands.should include("test 'myfile' = `readlink mypointer`")
74
+ end
75
+
76
+ it 'should do a "test -x" to check for an executable' do
77
+ @verification.commands.should include("test -x /usr/bin/ruby")
78
+ end
79
+
80
+ it 'should test the "which" command to look for a global executable' do
81
+ @verification.commands.should include('[ -n "`echo \`which rails\``" ]')
82
+ end
83
+
84
+ it 'should test the process list to find a process' do
85
+ @verification.commands.should include("ps -C httpd")
86
+ end
87
+
88
+ it 'should check if ruby can include a, b, c' do
89
+ @verification.commands.should include("ruby -e \"require 'rubygems';require 'a';require 'b';require 'c'\"")
90
+ end
91
+
92
+ it 'should check that a ruby gem is installed' do
93
+ @verification.commands.should include("sudo gem list 'rails' --installed --version '2.1.0' > /dev/null")
94
+ end
95
+
96
+ it 'should check that an RPM is installed' do
97
+ @verification.commands.should include("rpm -qa | grep ntp")
98
+ end
99
+ end
100
+
101
+ describe 'with configurations' do
102
+ # Make sure it includes Sprinkle::Configurable
103
+ it 'should respond to configurable methods' do
104
+ @verification.should respond_to(:defaults)
105
+ end
106
+
107
+ it 'should default padding option to 4' do
108
+ @verification.padding.should eql(4)
109
+ end
110
+ end
111
+
112
+ describe 'with process' do
113
+ it 'should raise an error when no delivery mechanism is set' do
114
+ @verification.instance_variable_set(:@delivery, nil)
115
+ lambda { @verification.process([]) }.should raise_error
116
+ end
117
+
118
+ describe 'when not testing' do
119
+ before do
120
+ # To be explicit
121
+ Sprinkle::OPTIONS[:testing] = false
122
+ end
123
+
124
+ it 'should call process on the delivery with the correct parameters' do
125
+ @delivery.should_receive(:process).with(@name, @verification.commands, [:app], true).once.and_return(true)
126
+ @verification.process([:app])
127
+ end
128
+
129
+ it 'should raise Sprinkle::VerificationFailed exception when commands fail' do
130
+ @delivery.should_receive(:process).once.and_return(false)
131
+ lambda { @verification.process([:app]) }.should raise_error(Sprinkle::VerificationFailed) do |error|
132
+ error.package.should eql(@package)
133
+ error.description.should eql('moo')
134
+ end
135
+ end
136
+ end
137
+
138
+ describe 'when testing' do
139
+ before do
140
+ Sprinkle::OPTIONS[:testing] = true
141
+ @logger = mock(ActiveSupport::BufferedLogger, :debug => true, :debug? => true)
142
+ end
143
+
144
+ it 'should not call process on the delivery' do
145
+ @delivery.should_not_receive(:process)
146
+ end
147
+
148
+ it 'should print the install sequence to the console' do
149
+ @verification.should_receive(:logger).twice.and_return(@logger)
150
+ end
151
+
152
+ after do
153
+ @verification.process([:app])
154
+ Sprinkle::OPTIONS[:testing] = false
155
+ end
156
+ end
157
+ end
158
+
159
+ describe 'with registering new verification modules' do
160
+ module MyModule
161
+ def rawr; end
162
+ end
163
+
164
+ it 'should not respond to rawr initially' do
165
+ @verification.should_not respond_to(:rawr)
166
+ end
167
+
168
+ it 'should respond to rawr after registering the module' do
169
+ Sprinkle::Verify.register(MyModule)
170
+ @verification.should respond_to(:rawr)
171
+ end
172
+ end
173
+ end
Binary file
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "sprinkle/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "dhill-sprinkle"
7
+ s.version = Sprinkle::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Marcus Crafter", "Dave Hill"]
10
+ s.email = ["crafter@redartisan.com", "dhill@digitalbrook.com"]
11
+ s.homepage = "http://github.com/dhill/sprinkle"
12
+ s.summary = %q{Ruby DSL-based software provisioning tool}
13
+ s.description = %q{Ruby DSL-based software provisioning tool}
14
+
15
+ s.rubyforge_project = "dhill-sprinkle"
16
+
17
+ s.add_development_dependency "rspec", ">= 1.2.9"
18
+ s.add_dependency('activesupport', '>= 2.0.2')
19
+ s.add_dependency('highline', '>= 1.4.0')
20
+ s.add_dependency('capistrano', '>= 2.5.5')
21
+
22
+ s.files = `git ls-files`.split("\n")
23
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
24
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
25
+ s.require_paths = ["lib"]
26
+ end
metadata ADDED
@@ -0,0 +1,281 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dhill-sprinkle
3
+ version: !ruby/object:Gem::Version
4
+ hash: 89
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 3
10
+ - 1
11
+ version: 0.3.3.1
12
+ platform: ruby
13
+ authors:
14
+ - Marcus Crafter
15
+ - Dave Hill
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2011-05-16 00:00:00 -04:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: rspec
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ hash: 13
32
+ segments:
33
+ - 1
34
+ - 2
35
+ - 9
36
+ version: 1.2.9
37
+ type: :development
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: activesupport
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 11
48
+ segments:
49
+ - 2
50
+ - 0
51
+ - 2
52
+ version: 2.0.2
53
+ type: :runtime
54
+ version_requirements: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ name: highline
57
+ prerelease: false
58
+ requirement: &id003 !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 7
64
+ segments:
65
+ - 1
66
+ - 4
67
+ - 0
68
+ version: 1.4.0
69
+ type: :runtime
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: capistrano
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 17
80
+ segments:
81
+ - 2
82
+ - 5
83
+ - 5
84
+ version: 2.5.5
85
+ type: :runtime
86
+ version_requirements: *id004
87
+ description: Ruby DSL-based software provisioning tool
88
+ email:
89
+ - crafter@redartisan.com
90
+ - dhill@digitalbrook.com
91
+ executables:
92
+ - sprinkle
93
+ extensions: []
94
+
95
+ extra_rdoc_files: []
96
+
97
+ files:
98
+ - .gitignore
99
+ - CREDITS
100
+ - Gemfile
101
+ - MIT-LICENSE
102
+ - README.markdown
103
+ - Rakefile
104
+ - VERSION
105
+ - bin/sprinkle
106
+ - examples/packages/build_essential.rb
107
+ - examples/packages/databases/mysql.rb
108
+ - examples/packages/databases/sqlite3.rb
109
+ - examples/packages/phusion.rb
110
+ - examples/packages/ruby/rails.rb
111
+ - examples/packages/ruby/ruby.rb
112
+ - examples/packages/ruby/rubygems.rb
113
+ - examples/packages/scm/git.rb
114
+ - examples/packages/scm/subversion.rb
115
+ - examples/packages/servers/apache.rb
116
+ - examples/rails/README
117
+ - examples/rails/deploy.rb
118
+ - examples/rails/packages/database.rb
119
+ - examples/rails/packages/essential.rb
120
+ - examples/rails/packages/rails.rb
121
+ - examples/rails/packages/scm.rb
122
+ - examples/rails/packages/search.rb
123
+ - examples/rails/packages/server.rb
124
+ - examples/rails/rails.rb
125
+ - examples/sprinkle/sprinkle.rb
126
+ - lib/sprinkle.rb
127
+ - lib/sprinkle/actors/actors.rb
128
+ - lib/sprinkle/actors/capistrano.rb
129
+ - lib/sprinkle/actors/local.rb
130
+ - lib/sprinkle/actors/ssh.rb
131
+ - lib/sprinkle/actors/vlad.rb
132
+ - lib/sprinkle/configurable.rb
133
+ - lib/sprinkle/deployment.rb
134
+ - lib/sprinkle/extensions/arbitrary_options.rb
135
+ - lib/sprinkle/extensions/array.rb
136
+ - lib/sprinkle/extensions/blank_slate.rb
137
+ - lib/sprinkle/extensions/dsl_accessor.rb
138
+ - lib/sprinkle/extensions/string.rb
139
+ - lib/sprinkle/extensions/symbol.rb
140
+ - lib/sprinkle/installers/apt.rb
141
+ - lib/sprinkle/installers/binary.rb
142
+ - lib/sprinkle/installers/bsd_port.rb
143
+ - lib/sprinkle/installers/deb.rb
144
+ - lib/sprinkle/installers/freebsd_pkg.rb
145
+ - lib/sprinkle/installers/freebsd_portinstall.rb
146
+ - lib/sprinkle/installers/gem.rb
147
+ - lib/sprinkle/installers/install_package.rb
148
+ - lib/sprinkle/installers/installer.rb
149
+ - lib/sprinkle/installers/mac_port.rb
150
+ - lib/sprinkle/installers/noop.rb
151
+ - lib/sprinkle/installers/openbsd_pkg.rb
152
+ - lib/sprinkle/installers/opensolaris_pkg.rb
153
+ - lib/sprinkle/installers/push_text.rb
154
+ - lib/sprinkle/installers/rake.rb
155
+ - lib/sprinkle/installers/replace_text.rb
156
+ - lib/sprinkle/installers/rpm.rb
157
+ - lib/sprinkle/installers/runner.rb
158
+ - lib/sprinkle/installers/smart.rb
159
+ - lib/sprinkle/installers/source.rb
160
+ - lib/sprinkle/installers/transfer.rb
161
+ - lib/sprinkle/installers/user.rb
162
+ - lib/sprinkle/installers/yum.rb
163
+ - lib/sprinkle/installers/zypper.rb
164
+ - lib/sprinkle/package.rb
165
+ - lib/sprinkle/policy.rb
166
+ - lib/sprinkle/script.rb
167
+ - lib/sprinkle/verifiers/apt.rb
168
+ - lib/sprinkle/verifiers/directory.rb
169
+ - lib/sprinkle/verifiers/executable.rb
170
+ - lib/sprinkle/verifiers/file.rb
171
+ - lib/sprinkle/verifiers/package.rb
172
+ - lib/sprinkle/verifiers/process.rb
173
+ - lib/sprinkle/verifiers/rpm.rb
174
+ - lib/sprinkle/verifiers/ruby.rb
175
+ - lib/sprinkle/verifiers/symlink.rb
176
+ - lib/sprinkle/verify.rb
177
+ - lib/sprinkle/version.rb
178
+ - script/console
179
+ - script/destroy
180
+ - script/generate
181
+ - spec/spec.opts
182
+ - spec/spec_helper.rb
183
+ - spec/sprinkle/actors/capistrano_spec.rb
184
+ - spec/sprinkle/actors/local_spec.rb
185
+ - spec/sprinkle/configurable_spec.rb
186
+ - spec/sprinkle/deployment_spec.rb
187
+ - spec/sprinkle/extensions/array_spec.rb
188
+ - spec/sprinkle/extensions/string_spec.rb
189
+ - spec/sprinkle/installers/apt_spec.rb
190
+ - spec/sprinkle/installers/bsd_port_spec.rb
191
+ - spec/sprinkle/installers/freebsd_pkg_spec.rb
192
+ - spec/sprinkle/installers/freebsd_portinstall_spec.rb
193
+ - spec/sprinkle/installers/gem_spec.rb
194
+ - spec/sprinkle/installers/installer_spec.rb
195
+ - spec/sprinkle/installers/mac_port_spec.rb
196
+ - spec/sprinkle/installers/noop_spec.rb
197
+ - spec/sprinkle/installers/openbsd_pkg_spec.rb
198
+ - spec/sprinkle/installers/opensolaris_pkg_spec.rb
199
+ - spec/sprinkle/installers/push_text_spec.rb
200
+ - spec/sprinkle/installers/rake_spec.rb
201
+ - spec/sprinkle/installers/replace_text_spec.rb
202
+ - spec/sprinkle/installers/rpm_spec.rb
203
+ - spec/sprinkle/installers/runner_spec.rb
204
+ - spec/sprinkle/installers/source_spec.rb
205
+ - spec/sprinkle/installers/transfer_spec.rb
206
+ - spec/sprinkle/installers/yum_spec.rb
207
+ - spec/sprinkle/installers/zypper_spec.rb
208
+ - spec/sprinkle/package_spec.rb
209
+ - spec/sprinkle/policy_spec.rb
210
+ - spec/sprinkle/script_spec.rb
211
+ - spec/sprinkle/sprinkle_spec.rb
212
+ - spec/sprinkle/verify_spec.rb
213
+ - sprinkle-0.3.3.1.gem
214
+ - sprinkle.gemspec
215
+ has_rdoc: true
216
+ homepage: http://github.com/dhill/sprinkle
217
+ licenses: []
218
+
219
+ post_install_message:
220
+ rdoc_options: []
221
+
222
+ require_paths:
223
+ - lib
224
+ required_ruby_version: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ">="
228
+ - !ruby/object:Gem::Version
229
+ hash: 3
230
+ segments:
231
+ - 0
232
+ version: "0"
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ">="
237
+ - !ruby/object:Gem::Version
238
+ hash: 3
239
+ segments:
240
+ - 0
241
+ version: "0"
242
+ requirements: []
243
+
244
+ rubyforge_project: dhill-sprinkle
245
+ rubygems_version: 1.3.7
246
+ signing_key:
247
+ specification_version: 3
248
+ summary: Ruby DSL-based software provisioning tool
249
+ test_files:
250
+ - spec/spec.opts
251
+ - spec/spec_helper.rb
252
+ - spec/sprinkle/actors/capistrano_spec.rb
253
+ - spec/sprinkle/actors/local_spec.rb
254
+ - spec/sprinkle/configurable_spec.rb
255
+ - spec/sprinkle/deployment_spec.rb
256
+ - spec/sprinkle/extensions/array_spec.rb
257
+ - spec/sprinkle/extensions/string_spec.rb
258
+ - spec/sprinkle/installers/apt_spec.rb
259
+ - spec/sprinkle/installers/bsd_port_spec.rb
260
+ - spec/sprinkle/installers/freebsd_pkg_spec.rb
261
+ - spec/sprinkle/installers/freebsd_portinstall_spec.rb
262
+ - spec/sprinkle/installers/gem_spec.rb
263
+ - spec/sprinkle/installers/installer_spec.rb
264
+ - spec/sprinkle/installers/mac_port_spec.rb
265
+ - spec/sprinkle/installers/noop_spec.rb
266
+ - spec/sprinkle/installers/openbsd_pkg_spec.rb
267
+ - spec/sprinkle/installers/opensolaris_pkg_spec.rb
268
+ - spec/sprinkle/installers/push_text_spec.rb
269
+ - spec/sprinkle/installers/rake_spec.rb
270
+ - spec/sprinkle/installers/replace_text_spec.rb
271
+ - spec/sprinkle/installers/rpm_spec.rb
272
+ - spec/sprinkle/installers/runner_spec.rb
273
+ - spec/sprinkle/installers/source_spec.rb
274
+ - spec/sprinkle/installers/transfer_spec.rb
275
+ - spec/sprinkle/installers/yum_spec.rb
276
+ - spec/sprinkle/installers/zypper_spec.rb
277
+ - spec/sprinkle/package_spec.rb
278
+ - spec/sprinkle/policy_spec.rb
279
+ - spec/sprinkle/script_spec.rb
280
+ - spec/sprinkle/sprinkle_spec.rb
281
+ - spec/sprinkle/verify_spec.rb