crafterm-sprinkle 0.1.0 → 0.1.1
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/README.txt +1 -1
- data/lib/sprinkle/installers/source.rb +1 -1
- data/lib/sprinkle/package.rb +20 -20
- data/lib/sprinkle/policy.rb +1 -0
- data/lib/sprinkle/version.rb +1 -1
- data/spec/sprinkle/installers/source_spec.rb +1 -1
- data/spec/sprinkle/policy_spec.rb +16 -0
- metadata +1 -1
data/README.txt
CHANGED
@@ -167,7 +167,7 @@ An full example Sprinkle deployment script for deploying Rails (via gems), MySQL
|
|
167
167
|
|
168
168
|
# Deployment
|
169
169
|
|
170
|
-
# Configures
|
170
|
+
# Configures sprinkle to use capistrano for delivery of commands to the remote machines (via
|
171
171
|
# the named 'deploy' recipe). Also configures 'source' installer defaults to put package gear
|
172
172
|
# in /usr/local
|
173
173
|
|
@@ -52,7 +52,7 @@ module Sprinkle
|
|
52
52
|
def configure_commands
|
53
53
|
return [] if custom_install?
|
54
54
|
|
55
|
-
command = "bash -c 'cd #{build_dir} && ./configure --
|
55
|
+
command = "bash -c 'cd #{build_dir} && ./configure --prefix=#{@options[:prefix]} "
|
56
56
|
|
57
57
|
extras = {
|
58
58
|
:enable => '--enable', :disable => '--disable',
|
data/lib/sprinkle/package.rb
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
module Sprinkle
|
2
2
|
module Package
|
3
3
|
PACKAGES = {}
|
4
|
-
|
4
|
+
|
5
5
|
def package(name, metadata = {}, &block)
|
6
6
|
package = Package.new(name, metadata, &block)
|
7
7
|
PACKAGES[name] = package
|
8
|
-
|
8
|
+
|
9
9
|
if package.provides
|
10
10
|
(PACKAGES[package.provides] ||= []) << package
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
package
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
class Package
|
17
17
|
include ArbitraryOptions
|
18
18
|
attr_accessor :name, :provides, :installer, :dependencies
|
19
|
-
|
19
|
+
|
20
20
|
def initialize(name, metadata = {}, &block)
|
21
21
|
raise 'No package name supplied' unless name
|
22
22
|
|
@@ -25,49 +25,49 @@ module Sprinkle
|
|
25
25
|
@dependencies = []
|
26
26
|
self.instance_eval &block
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
def apt(*names)
|
30
30
|
@installer = Sprinkle::Installers::Apt.new(self, *names)
|
31
31
|
end
|
32
|
-
|
33
|
-
def gem(name)
|
32
|
+
|
33
|
+
def gem(name, options = {}, &block)
|
34
34
|
@dependencies << :rubygems
|
35
|
-
@installer = Sprinkle::Installers::Gem.new(self, name)
|
35
|
+
@installer = Sprinkle::Installers::Gem.new(self, name, options, &block)
|
36
36
|
end
|
37
|
-
|
38
|
-
def source(source, &block)
|
37
|
+
|
38
|
+
def source(source, options = {}, &block)
|
39
39
|
@dependencies << :build_essential # REVISIT: should only be for Ubuntu/Debian, need platform specific bits here
|
40
|
-
@installer = Sprinkle::Installers::Source.new(self, source, &block)
|
40
|
+
@installer = Sprinkle::Installers::Source.new(self, source, options, &block)
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
def process(deployment, roles)
|
44
44
|
return if meta_package?
|
45
45
|
|
46
46
|
@installer.defaults(deployment)
|
47
47
|
@installer.process(roles)
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def requires(*packages)
|
51
51
|
@dependencies << packages
|
52
52
|
@dependencies.flatten!
|
53
53
|
end
|
54
|
-
|
54
|
+
|
55
55
|
def tree(depth = 1, &block)
|
56
56
|
packages = []
|
57
|
-
|
57
|
+
|
58
58
|
@dependencies.each do |dep|
|
59
59
|
package = PACKAGES[dep]
|
60
60
|
block.call(self, package, depth) if block
|
61
61
|
packages << package.tree(depth + 1, &block)
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
packages << self
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
def to_s; @name; end
|
68
|
-
|
68
|
+
|
69
69
|
private
|
70
|
-
|
70
|
+
|
71
71
|
def meta_package?
|
72
72
|
@installer == nil
|
73
73
|
end
|
data/lib/sprinkle/policy.rb
CHANGED
@@ -38,6 +38,7 @@ module Sprinkle
|
|
38
38
|
cloud_info "\nPolicy #{@name} requires package #{p}"
|
39
39
|
|
40
40
|
package = Sprinkle::Package::PACKAGES[p]
|
41
|
+
raise "Package definition not found for key: #{p}" unless package
|
41
42
|
package = select_package(p, package) if package.is_a? Array # handle virtual package selection
|
42
43
|
|
43
44
|
tree = package.tree do |parent, child, depth|
|
data/lib/sprinkle/version.rb
CHANGED
@@ -140,7 +140,7 @@ describe Sprinkle::Installers::Source do
|
|
140
140
|
|
141
141
|
@installer.should_receive(:build).and_return(
|
142
142
|
[
|
143
|
-
"bash -c 'cd /usr/local/builds && ./configure --
|
143
|
+
"bash -c 'cd /usr/local/builds && ./configure --prefix=/usr/local #{options} > #{@package.name}-configure.log 2>&1'"
|
144
144
|
]
|
145
145
|
)
|
146
146
|
end
|
@@ -108,3 +108,19 @@ describe Sprinkle::Policy do
|
|
108
108
|
end
|
109
109
|
end
|
110
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
|