jemmyw-sprinkle 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.
@@ -43,6 +43,7 @@ lib/sprinkle/extensions/string.rb
43
43
  lib/sprinkle/extensions/symbol.rb
44
44
  lib/sprinkle/installers/apt.rb
45
45
  lib/sprinkle/installers/bsd_port.rb
46
+ lib/sprinkle/installers/config.rb
46
47
  lib/sprinkle/installers/deb.rb
47
48
  lib/sprinkle/installers/freebsd_pkg.rb
48
49
  lib/sprinkle/installers/gem.rb
@@ -56,6 +57,7 @@ lib/sprinkle/installers/rpm.rb
56
57
  lib/sprinkle/installers/source.rb
57
58
  lib/sprinkle/installers/yum.rb
58
59
  lib/sprinkle/installers/custom.rb
60
+ lib/sprinkle/installers/pear.rb
59
61
  lib/sprinkle/package.rb
60
62
  lib/sprinkle/policy.rb
61
63
  lib/sprinkle/script.rb
@@ -67,6 +69,7 @@ lib/sprinkle/verifiers/process.rb
67
69
  lib/sprinkle/verifiers/ruby.rb
68
70
  lib/sprinkle/verifiers/symlink.rb
69
71
  lib/sprinkle/verifiers/user.rb
72
+ lib/sprinkle/verifiers/pear.rb
70
73
  lib/sprinkle/verify.rb
71
74
  lib/sprinkle/version.rb
72
75
  script/destroy
@@ -93,6 +96,7 @@ spec/sprinkle/installers/rpm_spec.rb
93
96
  spec/sprinkle/installers/source_spec.rb
94
97
  spec/sprinkle/installers/yum_spec.rb
95
98
  spec/sprinkle/installers/custom_spec.rb
99
+ spec/sprinkle/installers/pear_spec.rb
96
100
  spec/sprinkle/package_spec.rb
97
101
  spec/sprinkle/policy_spec.rb
98
102
  spec/sprinkle/script_spec.rb
@@ -0,0 +1,25 @@
1
+ module Sprinkle
2
+ module Installers
3
+ # = Pear Package Installer
4
+ #
5
+ class Pear < Installer
6
+ attr_accessor :packages #:nodoc:
7
+
8
+ def initialize(parent, *packages, &block) #:nodoc:
9
+ packages.flatten!
10
+
11
+ options.update(packages.pop) if packages.last.is_a?(Hash)
12
+
13
+ super parent, options, &block
14
+
15
+ @packages = packages
16
+ end
17
+
18
+ protected
19
+
20
+ def install_commands #:nodoc:
21
+ "pear install #{@packages.join(' ')}"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -176,7 +176,15 @@ module Sprinkle
176
176
  end
177
177
 
178
178
  def custom(command, &block)
179
- @installer = Sprinkle::Installers::Custom.new(self, command, &block)
179
+ @operations << Sprinkle::Installers::Custom.new(self, command, &block)
180
+ end
181
+
182
+ def pear(*names, &block)
183
+ @operations << Sprinkle::Installers::Pear.new(self, *names, &block)
184
+ end
185
+
186
+ def config(&block)
187
+ @operations << Sprinkle::Installers::Config.new(self, &block)
180
188
  end
181
189
 
182
190
  def verify(description = '', &block)
@@ -0,0 +1,15 @@
1
+ module Sprinkle
2
+ module Verifiers
3
+ # = Dpkg Verifiers
4
+ #
5
+ # This verifier checks if a dpkg package is installed
6
+ module Pear
7
+ Sprinkle::Verify.register(Sprinkle::Verifiers::Pear)
8
+
9
+ def has_pear(name, version = nil)
10
+ version = version.nil? ? '' : version.gsub('.', '\.')
11
+ @commands << "pear list --allchannels 2>&1 | grep -e '^#{name}\\s*#{version}.*$'"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,7 @@ module Sprinkle
4
4
  Sprinkle::Verify.register(Sprinkle::Verifiers::User)
5
5
 
6
6
  def has_user(name)
7
- @commands << "cat /etc/passwd | grep -q ^#{name}"
7
+ @commands << "cat /etc/passwd | grep -e '^#{name}'"
8
8
  end
9
9
  end
10
10
  end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Sprinkle::Installers::Pear do
4
+ before do
5
+ @pear = 'Log'
6
+ @pear2 = 'Test'
7
+ end
8
+
9
+ describe 'with one package' do
10
+ before do
11
+ @package = mock(Sprinkle::Package, :name => 'pear test', :source => nil, :repository => nil)
12
+ @installer = Sprinkle::Installers::Pear.new(@package, @pear)
13
+ end
14
+
15
+ it 'should accept a single package to install' do
16
+ @installer.packages.should == [@pear]
17
+ end
18
+ end
19
+
20
+ describe 'with two packages' do
21
+ before do
22
+ @package = mock(Sprinkle::Package, :name => 'pear test', :source => nil, :repository => nil)
23
+ @installer = Sprinkle::Installers::Pear.new(@package, @pear, @pear2)
24
+ end
25
+
26
+ it 'should accept two packages to install' do
27
+ @installer.packages.should == [@pear, @pear2]
28
+ end
29
+ end
30
+
31
+ describe 'during installation' do
32
+ before do
33
+ @package = mock(Sprinkle::Package, :name => 'pear test', :source => nil, :repository => nil)
34
+ @installer = Sprinkle::Installers::Pear.new(@package, @pear, @pear2) do
35
+ pre :install, 'op1'
36
+ post :install, 'op2'
37
+ end
38
+ end
39
+
40
+ it 'should invoke the pear installer for the specified package' do
41
+ @installer.send(:install_commands).should == "pear install Log Test"
42
+ end
43
+
44
+ it 'should automatically insert pre/post commands for the specified package' do
45
+ @installer.send(:install_sequence).should == [ 'op1', "pear install #{@pear} #{@pear2}", 'op2']
46
+ end
47
+ end
48
+ end
@@ -12,12 +12,14 @@ describe Sprinkle::Package do
12
12
  # Kind of a messy way to do this but it works and DRYs out
13
13
  # the specs. Checks to make sure an installer is receiving
14
14
  # the block passed to it throught the package block.
15
- def check_block_forwarding_on(installer)
15
+ def check_block_forwarding_on(installer, args = 'archive')
16
+ args = [args] unless args.is_a?(Array)
17
+
16
18
  eval(<<CODE, binding, __FILE__, __LINE__)
17
19
  pre_count = 0
18
20
  lambda {
19
21
  pkg = package @name do
20
- #{installer} 'archive' do
22
+ #{installer}(*args) do
21
23
  pre :install, 'preOp'
22
24
  end
23
25
  end
@@ -110,6 +112,14 @@ CODE
110
112
  end
111
113
 
112
114
  describe 'installer configuration' do
115
+ it 'should optionally accept a pear installer' do
116
+ pkg = package @name do
117
+ pear %w( pear1 pear2 )
118
+ end
119
+
120
+ pkg.should respond_to(:pear)
121
+ pkg.operations.last.should be_a(Sprinkle::Installers::Pear)
122
+ end
113
123
 
114
124
  it 'should optionally accept an apt installer' do
115
125
  pkg = package @name do
@@ -195,12 +205,24 @@ CODE
195
205
 
196
206
  end
197
207
 
208
+ describe 'with a config installer' do
209
+ it 'should forward block to installer superclass' do
210
+ check_block_forwarding_on(:config, [])
211
+ end
212
+ end
213
+
198
214
  describe 'with a custom installer' do
199
215
  it 'should forward block to installer superclass' do
200
216
  check_block_forwarding_on(:custom)
201
217
  end
202
218
  end
203
219
 
220
+ describe 'with a pear installer' do
221
+ it 'should forward block to installer superclass' do
222
+ check_block_forwarding_on(:pear)
223
+ end
224
+ end
225
+
204
226
  describe 'when processing' do
205
227
 
206
228
  before do
@@ -102,7 +102,7 @@ describe Sprinkle::Verify do
102
102
  end
103
103
 
104
104
  it 'should check that a user is in passwd' do
105
- @verification.commands.should include('cat /etc/passwd | grep -q ^deployer')
105
+ @verification.commands.should include('cat /etc/passwd | grep -e \'^deployer\'')
106
106
  end
107
107
 
108
108
  it 'should check that a pear package is installed' do
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{sprinkle}
5
- s.version = "0.2.3"
5
+ s.version = "0.2.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Marcus Crafter"]
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.email = ["crafterm@redartisan.com"]
13
13
  s.executables = ["sprinkle"]
14
14
  s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
15
- s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "bin/sprinkle", "config/hoe.rb", "config/requirements.rb", "examples/packages/build_essential.rb", "examples/packages/databases/mysql.rb", "examples/packages/databases/sqlite3.rb", "examples/packages/phusion.rb", "examples/packages/ruby/rails.rb", "examples/packages/ruby/ruby.rb", "examples/packages/ruby/rubygems.rb", "examples/packages/scm/git.rb", "examples/packages/scm/subversion.rb", "examples/packages/servers/apache.rb", "examples/rails/README", "examples/rails/deploy.rb", "examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb", "examples/rails/packages/scm.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb", "examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/actors.rb", "lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/local.rb", "lib/sprinkle/actors/ssh.rb", "lib/sprinkle/actors/vlad.rb", "lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb", "lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb", "lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb", "lib/sprinkle/installers/bsd_port.rb", "lib/sprinkle/installers/deb.rb", "lib/sprinkle/installers/freebsd_pkg.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb", "lib/sprinkle/installers/mac_port.rb", "lib/sprinkle/installers/openbsd_pkg.rb", "lib/sprinkle/installers/opensolaris_pkg.rb", "lib/sprinkle/installers/push_text.rb", "lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb", "lib/sprinkle/installers/yum.rb", "lib/sprinkle/installers/custom.rb", "lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb", "lib/sprinkle/verifiers/dpkg.rb", "lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/process.rb", "lib/sprinkle/verifiers/ruby.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verifiers/user.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb", "spec/sprinkle/actors/local_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb", "spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb", "spec/sprinkle/installers/bsd_port_spec.rb", "spec/sprinkle/installers/freebsd_pkg_spec.rb", "spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/mac_port_spec.rb", "spec/sprinkle/installers/openbsd_pkg_spec.rb", "spec/sprinkle/installers/opensolaris_pkg_spec.rb", "spec/sprinkle/installers/push_text_spec.rb", "spec/sprinkle/installers/rake_spec.rb", "spec/sprinkle/installers/rpm_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/installers/yum_spec.rb", "spec/sprinkle/installers/custom_spec.rb", "spec/sprinkle/package_spec.rb", "spec/sprinkle/policy_spec.rb", "spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/verify_spec.rb", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
15
+ s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "bin/sprinkle", "config/hoe.rb", "config/requirements.rb", "examples/packages/build_essential.rb", "examples/packages/databases/mysql.rb", "examples/packages/databases/sqlite3.rb", "examples/packages/phusion.rb", "examples/packages/ruby/rails.rb", "examples/packages/ruby/ruby.rb", "examples/packages/ruby/rubygems.rb", "examples/packages/scm/git.rb", "examples/packages/scm/subversion.rb", "examples/packages/servers/apache.rb", "examples/rails/README", "examples/rails/deploy.rb", "examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb", "examples/rails/packages/scm.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb", "examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/actors.rb", "lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/local.rb", "lib/sprinkle/actors/ssh.rb", "lib/sprinkle/actors/vlad.rb", "lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb", "lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb", "lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb", "lib/sprinkle/installers/bsd_port.rb", "lib/sprinkle/installers/deb.rb", "lib/sprinkle/installers/freebsd_pkg.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb", "lib/sprinkle/installers/mac_port.rb", "lib/sprinkle/installers/openbsd_pkg.rb", "lib/sprinkle/installers/opensolaris_pkg.rb", "lib/sprinkle/installers/push_text.rb", "lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb", "lib/sprinkle/installers/yum.rb", "lib/sprinkle/installers/custom.rb", "lib/sprinkle/installers/pear.rb", "lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb", "lib/sprinkle/verifiers/dpkg.rb", "lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/process.rb", "lib/sprinkle/verifiers/ruby.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verifiers/user.rb", "lib/sprinkle/verifiers/pear.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb", "spec/sprinkle/actors/local_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb", "spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb", "spec/sprinkle/installers/bsd_port_spec.rb", "spec/sprinkle/installers/freebsd_pkg_spec.rb", "spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/mac_port_spec.rb", "spec/sprinkle/installers/openbsd_pkg_spec.rb", "spec/sprinkle/installers/opensolaris_pkg_spec.rb", "spec/sprinkle/installers/push_text_spec.rb", "spec/sprinkle/installers/rake_spec.rb", "spec/sprinkle/installers/rpm_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/installers/yum_spec.rb", "spec/sprinkle/installers/custom_spec.rb", "spec/sprinkle/installers/pear_spec.rb", "spec/sprinkle/package_spec.rb", "spec/sprinkle/policy_spec.rb", "spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/verify_spec.rb", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
16
16
  s.has_rdoc = true
17
17
  s.homepage = %q{http://sprinkle.rubyforge.org}
18
18
  s.rdoc_options = ["--main", "README.txt"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jemmyw-sprinkle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Crafter
@@ -122,6 +122,7 @@ files:
122
122
  - lib/sprinkle/installers/source.rb
123
123
  - lib/sprinkle/installers/yum.rb
124
124
  - lib/sprinkle/installers/custom.rb
125
+ - lib/sprinkle/installers/pear.rb
125
126
  - lib/sprinkle/package.rb
126
127
  - lib/sprinkle/policy.rb
127
128
  - lib/sprinkle/script.rb
@@ -133,6 +134,7 @@ files:
133
134
  - lib/sprinkle/verifiers/ruby.rb
134
135
  - lib/sprinkle/verifiers/symlink.rb
135
136
  - lib/sprinkle/verifiers/user.rb
137
+ - lib/sprinkle/verifiers/pear.rb
136
138
  - lib/sprinkle/verify.rb
137
139
  - lib/sprinkle/version.rb
138
140
  - script/destroy
@@ -159,6 +161,7 @@ files:
159
161
  - spec/sprinkle/installers/source_spec.rb
160
162
  - spec/sprinkle/installers/yum_spec.rb
161
163
  - spec/sprinkle/installers/custom_spec.rb
164
+ - spec/sprinkle/installers/pear_spec.rb
162
165
  - spec/sprinkle/package_spec.rb
163
166
  - spec/sprinkle/policy_spec.rb
164
167
  - spec/sprinkle/script_spec.rb