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 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