crafterm-sprinkle 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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 spinkle to use capistrano for delivery of commands to the remote machines (via
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 --silent --prefix #{@options[:prefix]} "
55
+ command = "bash -c 'cd #{build_dir} && ./configure --prefix=#{@options[:prefix]} "
56
56
 
57
57
  extras = {
58
58
  :enable => '--enable', :disable => '--disable',
@@ -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
@@ -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|
@@ -2,7 +2,7 @@ module Sprinkle #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -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 --silent --prefix /usr/local #{options} > #{@package.name}-configure.log 2>&1'"
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crafterm-sprinkle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcus Crafter