jemmyw-sprinkle 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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