sprinkle 0.2.1 → 0.2.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/Manifest.txt +14 -10
- data/lib/sprinkle/installers/push_text.rb +45 -0
- data/lib/sprinkle/package.rb +18 -0
- data/lib/sprinkle/version.rb +1 -1
- data/spec/sprinkle/installers/opensolaris_pkg_spec.rb +49 -0
- data/spec/sprinkle/installers/push_text_spec.rb +55 -0
- data/spec/sprinkle/installers/rake_spec.rb +29 -0
- data/spec/sprinkle/package_spec.rb +13 -0
- data/sprinkle.gemspec +1 -1
- metadata +16 -12
data/Manifest.txt
CHANGED
@@ -42,18 +42,19 @@ lib/sprinkle/extensions/dsl_accessor.rb
|
|
42
42
|
lib/sprinkle/extensions/string.rb
|
43
43
|
lib/sprinkle/extensions/symbol.rb
|
44
44
|
lib/sprinkle/installers/apt.rb
|
45
|
+
lib/sprinkle/installers/bsd_port.rb
|
45
46
|
lib/sprinkle/installers/deb.rb
|
47
|
+
lib/sprinkle/installers/freebsd_pkg.rb
|
46
48
|
lib/sprinkle/installers/gem.rb
|
47
49
|
lib/sprinkle/installers/installer.rb
|
50
|
+
lib/sprinkle/installers/mac_port.rb
|
51
|
+
lib/sprinkle/installers/openbsd_pkg.rb
|
52
|
+
lib/sprinkle/installers/opensolaris_pkg.rb
|
53
|
+
lib/sprinkle/installers/push_text.rb
|
48
54
|
lib/sprinkle/installers/rake.rb
|
49
55
|
lib/sprinkle/installers/rpm.rb
|
50
56
|
lib/sprinkle/installers/source.rb
|
51
57
|
lib/sprinkle/installers/yum.rb
|
52
|
-
lib/sprinkle/installers/freebsd_pkg.rb
|
53
|
-
lib/sprinkle/installers/openbsd_pkg.rb
|
54
|
-
lib/sprinkle/installers/opensolaris_pkg.rb
|
55
|
-
lib/sprinkle/installers/bsd_port.rb
|
56
|
-
lib/sprinkle/installers/mac_port.rb
|
57
58
|
lib/sprinkle/package.rb
|
58
59
|
lib/sprinkle/policy.rb
|
59
60
|
lib/sprinkle/script.rb
|
@@ -76,15 +77,18 @@ spec/sprinkle/deployment_spec.rb
|
|
76
77
|
spec/sprinkle/extensions/array_spec.rb
|
77
78
|
spec/sprinkle/extensions/string_spec.rb
|
78
79
|
spec/sprinkle/installers/apt_spec.rb
|
80
|
+
spec/sprinkle/installers/bsd_port_spec.rb
|
81
|
+
spec/sprinkle/installers/freebsd_pkg_spec.rb
|
79
82
|
spec/sprinkle/installers/gem_spec.rb
|
80
83
|
spec/sprinkle/installers/installer_spec.rb
|
84
|
+
spec/sprinkle/installers/mac_port_spec.rb
|
85
|
+
spec/sprinkle/installers/openbsd_pkg_spec.rb
|
86
|
+
spec/sprinkle/installers/opensolaris_pkg_spec.rb
|
87
|
+
spec/sprinkle/installers/push_text_spec.rb
|
88
|
+
spec/sprinkle/installers/rake_spec.rb
|
81
89
|
spec/sprinkle/installers/rpm_spec.rb
|
82
|
-
spec/sprinkle/installers/yum_spec.rb
|
83
90
|
spec/sprinkle/installers/source_spec.rb
|
84
|
-
spec/sprinkle/installers/
|
85
|
-
spec/sprinkle/installers/freebsd_pkg_spec.rb
|
86
|
-
spec/sprinkle/installers/bsd_port_spec.rb
|
87
|
-
spec/sprinkle/installers/mac_port_spec.rb
|
91
|
+
spec/sprinkle/installers/yum_spec.rb
|
88
92
|
spec/sprinkle/package_spec.rb
|
89
93
|
spec/sprinkle/policy_spec.rb
|
90
94
|
spec/sprinkle/script_spec.rb
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Sprinkle
|
2
|
+
module Installers
|
3
|
+
# Beware, strange "installer" coming your way.
|
4
|
+
#
|
5
|
+
# = Text configuration installer
|
6
|
+
#
|
7
|
+
# This installer pushes simple configuration into a file.
|
8
|
+
#
|
9
|
+
# == Example Usage
|
10
|
+
#
|
11
|
+
# Installing magic_beans into apache2.conf
|
12
|
+
#
|
13
|
+
# package :magic_beans do
|
14
|
+
# push_text 'magic_beans', '/etc/apache2/apache2.conf'
|
15
|
+
# end
|
16
|
+
#
|
17
|
+
# If you user has access to 'sudo' and theres a file that requires
|
18
|
+
# priveledges, you can pass :sudo => true
|
19
|
+
#
|
20
|
+
# package :magic_beans do
|
21
|
+
# push_text 'magic_beans', '/etc/apache2/apache2.conf', :sudo => true
|
22
|
+
# end
|
23
|
+
#
|
24
|
+
# A special verify step exists for this very installer
|
25
|
+
# its known as file_contains, it will test that a file indeed
|
26
|
+
# contains a substring that you send it.
|
27
|
+
#
|
28
|
+
class PushText < Installer
|
29
|
+
attr_accessor :text, :path #:nodoc:
|
30
|
+
|
31
|
+
def initialize(parent, text, path, options={}, &block) #:nodoc:
|
32
|
+
super parent, options, &block
|
33
|
+
@text = text
|
34
|
+
@path = path
|
35
|
+
end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
def install_commands #:nodoc:
|
40
|
+
"echo '#{@text}' |#{'sudo' if option?(:sudo)} tee -a #{@path}"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
data/lib/sprinkle/package.rb
CHANGED
@@ -237,6 +237,8 @@ module Sprinkle
|
|
237
237
|
|
238
238
|
@dependencies.each do |dep|
|
239
239
|
package = PACKAGES[dep]
|
240
|
+
package = select_package(dep, package) if package.is_a? Array
|
241
|
+
|
240
242
|
raise "Package definition not found for key: #{dep}" unless package
|
241
243
|
block.call(self, package, depth) if block
|
242
244
|
packages << package.tree(depth + 1, &block)
|
@@ -249,6 +251,22 @@ module Sprinkle
|
|
249
251
|
|
250
252
|
private
|
251
253
|
|
254
|
+
def select_package(name, packages)
|
255
|
+
if packages.size <= 1
|
256
|
+
package = packages.first
|
257
|
+
else
|
258
|
+
package = choose do |menu|
|
259
|
+
menu.prompt = "Multiple choices exist for virtual package #{name}"
|
260
|
+
menu.choices *packages.collect(&:to_s)
|
261
|
+
end
|
262
|
+
package = Sprinkle::Package::PACKAGES[package]
|
263
|
+
end
|
264
|
+
|
265
|
+
cloud_info "Selecting #{package.to_s} for virtual package #{name}"
|
266
|
+
|
267
|
+
package
|
268
|
+
end
|
269
|
+
|
252
270
|
def meta_package?
|
253
271
|
@installer == nil
|
254
272
|
end
|
data/lib/sprinkle/version.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Sprinkle::Installers::OpensolarisPkg do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@package = mock(Sprinkle::Package, :name => 'package')
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_pkg(pkgs, &block)
|
10
|
+
Sprinkle::Installers::OpensolarisPkg.new(@package, pkgs, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'when created' do
|
14
|
+
|
15
|
+
it 'should accept a single package to install' do
|
16
|
+
@installer = create_pkg 'ruby'
|
17
|
+
@installer.packages.should == [ 'ruby' ]
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should accept an array of packages to install' do
|
21
|
+
@installer = create_pkg %w( gcc gdb g++ )
|
22
|
+
@installer.packages.should == ['gcc', 'gdb', 'g++']
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
describe 'during installation' do
|
28
|
+
|
29
|
+
before do
|
30
|
+
@installer = create_pkg 'ruby' do
|
31
|
+
pre :install, 'op1'
|
32
|
+
post :install, 'op2'
|
33
|
+
end
|
34
|
+
@install_commands = @installer.send :install_commands
|
35
|
+
end
|
36
|
+
|
37
|
+
it 'should invoke the freebsd_pkg installer for all specified packages' do
|
38
|
+
@install_commands.should =~ /pkg install ruby/
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'should automatically insert pre/post commands for the specified package' do
|
42
|
+
@installer.send(:install_sequence).should == [ 'op1', 'pkg install ruby', 'op2' ]
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should install a specific version if defined'
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Sprinkle::Installers::PushText do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@package = mock(Sprinkle::Package, :name => 'package')
|
7
|
+
@options = {:sudo => true}
|
8
|
+
end
|
9
|
+
|
10
|
+
def create_text(text, path, options={}, &block)
|
11
|
+
Sprinkle::Installers::PushText.new(@package, text, path, options, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
describe 'when created' do
|
15
|
+
|
16
|
+
it 'should accept a single package to install' do
|
17
|
+
@installer = create_text 'crazy-configuration-methods', '/etc/doomed/file.conf'
|
18
|
+
@installer.text.should == 'crazy-configuration-methods'
|
19
|
+
@installer.path.should == '/etc/doomed/file.conf'
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'during installation' do
|
25
|
+
|
26
|
+
before do
|
27
|
+
@installer = create_text 'another-hair-brained-idea', '/dev/mind/late-night' do
|
28
|
+
pre :install, 'op1'
|
29
|
+
post :install, 'op2'
|
30
|
+
end
|
31
|
+
@install_commands = @installer.send :install_commands
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'should invoke the push text installer for all specified packages' do
|
35
|
+
@install_commands.should =~ /echo 'another-hair-brained-idea' | tee -a \/dev\/mind\/late-night/
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should automatically insert pre/post commands for the specified package' do
|
39
|
+
@installer.send(:install_sequence).should == [ 'op1', "echo 'another-hair-brained-idea' | tee -a /dev/mind/late-night", 'op2' ]
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
describe 'running with sudo' do
|
45
|
+
before do
|
46
|
+
@installer = create_text "I'm a special user", "/dev/mind/the-day-after", :sudo => true
|
47
|
+
@install_commands = @installer.send :install_commands
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should invoke the push installer with sudo" do
|
51
|
+
@install_commands.should =~ /echo 'I\'m a special user' | sudo tee -a \/dev\/mind\/the-day-after/
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
|
3
|
+
describe Sprinkle::Installers::Rake do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@package = mock(Sprinkle::Package, :name => 'spec')
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_rake(names, options = {}, &block)
|
10
|
+
Sprinkle::Installers::Rake.new(@package, names, options, &block)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'during installation' do
|
14
|
+
|
15
|
+
it 'should invoke the rake executer for all specified tasks' do
|
16
|
+
@installer = create_rake 'spec'
|
17
|
+
@install_commands = @installer.send :install_commands
|
18
|
+
@install_commands.should =~ /rake spec/
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should invoke the rake executer for all specified tasks' do
|
22
|
+
@installer = create_rake 'spec', :rakefile => '/some/Rakefile'
|
23
|
+
@install_commands = @installer.send :install_commands
|
24
|
+
@install_commands.should == "rake -f /some/Rakefile spec"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -374,6 +374,19 @@ CODE
|
|
374
374
|
|
375
375
|
end
|
376
376
|
|
377
|
+
describe 'virtual package dependencies' do
|
378
|
+
before do
|
379
|
+
@a = package :a do; requires :virtual ; end
|
380
|
+
@v1 = package :v1, :provides => :virtual do; end
|
381
|
+
@v2 = package :v2, :provides => :virtual do; end
|
382
|
+
end
|
383
|
+
|
384
|
+
it 'should select package for an array' do
|
385
|
+
@a.should_receive(:select_package).with(:virtual, [@v1,@v2]).and_return(@v1)
|
386
|
+
@a.tree do; end
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
377
390
|
describe 'with missing dependencies' do
|
378
391
|
|
379
392
|
before do
|
data/sprinkle.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprinkle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcus Crafter
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-03-
|
12
|
+
date: 2009-03-11 00:00:00 +11:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -108,18 +108,19 @@ files:
|
|
108
108
|
- lib/sprinkle/extensions/string.rb
|
109
109
|
- lib/sprinkle/extensions/symbol.rb
|
110
110
|
- lib/sprinkle/installers/apt.rb
|
111
|
+
- lib/sprinkle/installers/bsd_port.rb
|
111
112
|
- lib/sprinkle/installers/deb.rb
|
113
|
+
- lib/sprinkle/installers/freebsd_pkg.rb
|
112
114
|
- lib/sprinkle/installers/gem.rb
|
113
115
|
- lib/sprinkle/installers/installer.rb
|
116
|
+
- lib/sprinkle/installers/mac_port.rb
|
117
|
+
- lib/sprinkle/installers/openbsd_pkg.rb
|
118
|
+
- lib/sprinkle/installers/opensolaris_pkg.rb
|
119
|
+
- lib/sprinkle/installers/push_text.rb
|
114
120
|
- lib/sprinkle/installers/rake.rb
|
115
121
|
- lib/sprinkle/installers/rpm.rb
|
116
122
|
- lib/sprinkle/installers/source.rb
|
117
123
|
- lib/sprinkle/installers/yum.rb
|
118
|
-
- lib/sprinkle/installers/freebsd_pkg.rb
|
119
|
-
- lib/sprinkle/installers/openbsd_pkg.rb
|
120
|
-
- lib/sprinkle/installers/opensolaris_pkg.rb
|
121
|
-
- lib/sprinkle/installers/bsd_port.rb
|
122
|
-
- lib/sprinkle/installers/mac_port.rb
|
123
124
|
- lib/sprinkle/package.rb
|
124
125
|
- lib/sprinkle/policy.rb
|
125
126
|
- lib/sprinkle/script.rb
|
@@ -142,15 +143,18 @@ files:
|
|
142
143
|
- spec/sprinkle/extensions/array_spec.rb
|
143
144
|
- spec/sprinkle/extensions/string_spec.rb
|
144
145
|
- spec/sprinkle/installers/apt_spec.rb
|
146
|
+
- spec/sprinkle/installers/bsd_port_spec.rb
|
147
|
+
- spec/sprinkle/installers/freebsd_pkg_spec.rb
|
145
148
|
- spec/sprinkle/installers/gem_spec.rb
|
146
149
|
- spec/sprinkle/installers/installer_spec.rb
|
150
|
+
- spec/sprinkle/installers/mac_port_spec.rb
|
151
|
+
- spec/sprinkle/installers/openbsd_pkg_spec.rb
|
152
|
+
- spec/sprinkle/installers/opensolaris_pkg_spec.rb
|
153
|
+
- spec/sprinkle/installers/push_text_spec.rb
|
154
|
+
- spec/sprinkle/installers/rake_spec.rb
|
147
155
|
- spec/sprinkle/installers/rpm_spec.rb
|
148
|
-
- spec/sprinkle/installers/yum_spec.rb
|
149
156
|
- spec/sprinkle/installers/source_spec.rb
|
150
|
-
- spec/sprinkle/installers/
|
151
|
-
- spec/sprinkle/installers/freebsd_pkg_spec.rb
|
152
|
-
- spec/sprinkle/installers/bsd_port_spec.rb
|
153
|
-
- spec/sprinkle/installers/mac_port_spec.rb
|
157
|
+
- spec/sprinkle/installers/yum_spec.rb
|
154
158
|
- spec/sprinkle/package_spec.rb
|
155
159
|
- spec/sprinkle/policy_spec.rb
|
156
160
|
- spec/sprinkle/script_spec.rb
|