sprinkle 0.3.4 → 0.3.5

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.markdown CHANGED
@@ -6,6 +6,7 @@
6
6
  * <http://github.com/trevorturk/sprinkle-packages>
7
7
  * <http://www.vimeo.com/2888665>
8
8
  * <http://redartisan.lighthouseapp.com/projects/25275-sprinkle/tickets>
9
+ * <http://maxim.github.com/sprinkle-cheatsheet>
9
10
 
10
11
  ## DESCRIPTION:
11
12
 
data/Rakefile CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'rake'
3
+ require 'rspec/core/rake_task'
3
4
 
4
5
  begin
5
6
  require 'jeweler'
@@ -15,7 +16,7 @@ begin
15
16
  gem.add_dependency('activesupport', '>= 2.0.2')
16
17
  gem.add_dependency('highline', '>= 1.4.0')
17
18
  gem.add_dependency('capistrano', '>= 2.5.5')
18
-
19
+
19
20
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
20
21
  end
21
22
  Jeweler::GemcutterTasks.new
@@ -23,21 +24,29 @@ rescue LoadError
23
24
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
24
25
  end
25
26
 
26
- task "inst"=>[:clobber, :build] do
27
+ task "inst" => [:clobber, :build] do
27
28
  puts `gem install pkg/sprinkle-*.gem`
28
29
  end
29
30
 
30
- require 'rspec/core/rake_task'
31
- RSpec::Core::RakeTask.new(:spec) do |spec|
32
- spec.pattern = 'spec/**/*_spec.rb'
33
- spec.rspec_opts = ['--backtrace']
34
- # spec.rcov = true
35
- end
36
-
37
31
  task :spec => :check_dependencies
38
32
 
33
+ desc 'Default: run specs.'
39
34
  task :default => :spec
40
35
 
36
+ desc "Run specs"
37
+ RSpec::Core::RakeTask.new do |t|
38
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
39
+ # Put spec opts in a file named .rspec in root
40
+ end
41
+
42
+ desc "Generate code coverage"
43
+ RSpec::Core::RakeTask.new(:coverage) do |t|
44
+ t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec']
47
+ end
48
+
49
+
41
50
  require 'rake/rdoctask'
42
51
  Rake::RDocTask.new do |rdoc|
43
52
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.4
1
+ 0.3.5
@@ -76,7 +76,7 @@ module Sprinkle
76
76
  end
77
77
  end
78
78
 
79
- def transfer(name, source, destination, roles, recursive = true, suppress_and_return_failures = false)
79
+ def transfer(name, source, destination, roles, recursive = true, suppress_and_return_failures = false)
80
80
  define_task(name, roles) do
81
81
  upload source, destination, :via => :scp, :recursive => recursive
82
82
  end
@@ -90,7 +90,7 @@ module Sprinkle
90
90
  # Reraise error if we're not suppressing it
91
91
  raise
92
92
  end
93
- end
93
+ end
94
94
 
95
95
  private
96
96
 
@@ -6,7 +6,7 @@ module Sprinkle
6
6
  #
7
7
  # = Pre/Post Installation Hooks
8
8
  #
9
- # With all intallation methods you have the ability to specify multiple
9
+ # With all installation methods you have the ability to specify multiple
10
10
  # pre/post installation hooks. This gives you the ability to specify
11
11
  # commands to run before and after an installation takes place. All
12
12
  # commands by default are sudo'd so there is no need to include "sudo"
@@ -0,0 +1,23 @@
1
+ module Sprinkle
2
+ module Installers
3
+ class Pacman < Installer
4
+ attr_accessor :packages
5
+
6
+ def initialize(parent, *packages, &block)
7
+ super parent, options, &block
8
+
9
+ packages = [packages] unless packages.is_a?(Array)
10
+ packages.flatten!
11
+
12
+
13
+ @packages = packages
14
+ end
15
+
16
+ protected
17
+
18
+ def install_commands
19
+ "pacman -Sy #{@packages.join(' ')} --no-confirm --needed"
20
+ end
21
+ end
22
+ end
23
+ end
@@ -100,7 +100,7 @@ module Sprinkle
100
100
  if File.exist? @source
101
101
  [ "cp #{@source} #{@options[:archives].first}/#{archive_name}" ]
102
102
  else
103
- [ "wget -cq --directory-prefix='#{@options[:archives].first}' #{@source}" ]
103
+ [ "wget -cq -O '#{@options[:archives].first}/#{archive_name}' #{@source}" ]
104
104
  end
105
105
  end
106
106
 
@@ -120,7 +120,7 @@ module Sprinkle
120
120
  }
121
121
 
122
122
  extras.inject(command) { |m, (k, v)| m << create_options(k, v) if options[k]; m }
123
-
123
+
124
124
  [ command << " > #{@package.name}-configure.log 2>&1'" ]
125
125
  end
126
126
 
@@ -173,7 +173,11 @@ module Sprinkle
173
173
  end
174
174
 
175
175
  def archive_name #:nodoc:
176
- name = @options[:custom_archive] || @source.split('/').last
176
+ name = @source.split('/').last
177
+ if options[:custom_archive]
178
+ name = options[:custom_archive]
179
+ name = name.join if name.is_a? Array
180
+ end
177
181
  raise "Unable to determine archive name for source: #{source}, please update code knowledge" unless name
178
182
  name
179
183
  end
@@ -2,26 +2,26 @@
2
2
  class TemplateError < RuntimeError
3
3
  attr_reader :original_exception, :context
4
4
  SOURCE_CONTEXT_WINDOW = 2 unless defined? SOURCE_CONTEXT_WINDOW
5
-
5
+
6
6
  def initialize(original_exception, template, context)
7
7
  @original_exception, @template, @context = original_exception, template, context
8
8
  end
9
-
9
+
10
10
  def message
11
11
  @original_exception.message
12
12
  end
13
-
13
+
14
14
  def line_number
15
15
  @line_number ||= $1.to_i if original_exception.backtrace.find {|line| line =~ /\(erubis\):(\d+)/ }
16
16
  end
17
-
17
+
18
18
  def source_location
19
19
  "on line ##{line_number}"
20
20
  end
21
-
21
+
22
22
  def source_listing
23
- return nil if line_number.nil?
24
-
23
+ return nil if line_number.nil?
24
+
25
25
  @source_listing ||= begin
26
26
  line_index = line_number - 1
27
27
  beginning_line = line_index <= SOURCE_CONTEXT_WINDOW ? 0 : line_index - SOURCE_CONTEXT_WINDOW
@@ -36,7 +36,7 @@ class TemplateError < RuntimeError
36
36
  output.join("\n")
37
37
  end
38
38
  end
39
-
39
+
40
40
  def to_s
41
41
  "\n\n#{self.class} (#{message}) #{source_location}:\n\n" +
42
42
  "#{source_listing}\n\n #{original_exception.backtrace.join("\n ")}\n\n"
@@ -50,7 +50,7 @@ module Sprinkle
50
50
  # = File transfer installer
51
51
  #
52
52
  # This installer pushes files from the local disk to remote servers.
53
- #
53
+ #
54
54
  # == Example Usage
55
55
  #
56
56
  # Installing a nginx.conf onto remote servers
@@ -60,29 +60,29 @@ module Sprinkle
60
60
  # end
61
61
  #
62
62
  # If you user has access to 'sudo' and theres a file that requires
63
- # priveledges, you can pass :sudo => true
63
+ # priveledges, you can pass :sudo => true
64
64
  #
65
65
  # package :nginx_conf do
66
66
  # transfer 'files/nginx.conf', '/etc/nginx.conf', :sudo => true
67
67
  # end
68
68
  #
69
- # By default, transfers are recursive and you can move whole directories
70
- # via this method. If you wish to disable recursive transfers, you can pass
71
- # recursive => false, although it will not be obeyed when using the Vlad actor.
69
+ # By default, transfers are recursive and you can move whole directories
70
+ # via this method. If you wish to disable recursive transfers, you can pass
71
+ # recursive => false, although it will not be obeyed when using the Vlad actor.
72
+ #
73
+ # If you pass the option :render => true, this tells transfer that the source file
74
+ # is an ERB template to be rendered locally before being transferred (you can declare
75
+ # variables in the package scope). When render is true, recursive is turned off. Note
76
+ # you can also explicitly pass locals in to render with the :locals option.
77
+ #
78
+ # package :nginx_conf do
79
+ # nginx_port = 8080
80
+ # transfer 'files/nginx.conf', '/etc/nginx.conf', :render => true
81
+ # end
72
82
  #
73
- # If you pass the option :render => true, this tells transfer that the source file
74
- # is an ERB template to be rendered locally before being transferred (you can declare
75
- # variables in the package scope). When render is true, recursive is turned off. Note
76
- # you can also explicitly pass locals in to render with the :locals option.
77
- #
78
- # package :nginx_conf do
79
- # nginx_port = 8080
80
- # transfer 'files/nginx.conf', '/etc/nginx.conf', :render => true
81
- # end
82
- #
83
- # Finally, should you need to run commands before or after the file transfer (making
84
- # directories or changing permissions), you can use the pre/post :install directives
85
- # and they will be run.
83
+ # Finally, should you need to run commands before or after the file transfer (making
84
+ # directories or changing permissions), you can use the pre/post :install directives
85
+ # and they will be run.
86
86
  class Transfer < Installer
87
87
  attr_accessor :source, :destination #:nodoc:
88
88
 
@@ -92,37 +92,37 @@ module Sprinkle
92
92
  @destination = destination
93
93
  end
94
94
 
95
- def install_commands
96
- nil
97
- end
98
-
99
- def self.render_template(template, context, prefix)
100
- require 'tempfile'
101
- require 'erubis'
95
+ def install_commands
96
+ nil
97
+ end
102
98
 
103
- begin
99
+ def self.render_template(template, context, prefix)
100
+ require 'tempfile'
101
+ require 'erubis'
102
+
103
+ begin
104
104
  eruby = Erubis::Eruby.new(template)
105
105
  output = eruby.result(context)
106
106
  rescue Object => e
107
107
  raise TemplateError.new(e, template, context)
108
108
  end
109
109
 
110
- final_tempfile = Tempfile.new(prefix)
110
+ final_tempfile = Tempfile.new(prefix.to_s)
111
111
  final_tempfile.print(output)
112
112
  final_tempfile.close
113
- final_tempfile
114
- end
115
-
116
- def render_template(template, context, prefix)
117
- self.class.render_template(template, context, prefix)
118
- end
119
-
120
- def render_template_file(path, context, prefix)
121
- template = File.read(path)
122
- tempfile = render_template(template, context, @package.name)
123
- tempfile
124
- end
125
-
113
+ final_tempfile
114
+ end
115
+
116
+ def render_template(template, context, prefix)
117
+ self.class.render_template(template, context, prefix)
118
+ end
119
+
120
+ def render_template_file(path, context, prefix)
121
+ template = File.read(path)
122
+ tempfile = render_template(template, context, @package.name)
123
+ tempfile
124
+ end
125
+
126
126
  def process(roles) #:nodoc:
127
127
  assert_delivery
128
128
 
@@ -131,46 +131,46 @@ module Sprinkle
131
131
  end
132
132
 
133
133
  unless Sprinkle::OPTIONS[:testing]
134
- pre = pre_commands(:install)
135
- unless pre.empty?
136
- sequence = pre; sequence = sequence.join('; ') if sequence.is_a? Array
137
- logger.info "#{@package.name} pre-transfer commands: #{sequence} for roles: #{roles}\n"
138
- @delivery.process @package.name, sequence, roles
139
- end
140
-
141
- recursive = @options[:recursive]
142
-
143
- if options[:render]
144
- if options[:locals]
145
- context = {}
146
- options[:locals].each_pair do |k,v|
147
- if v.respond_to?(:call)
148
- context[k] = v.call
149
- else
150
- context[k] = v
151
- end
152
- end
153
- else
154
- context = binding()
155
- end
156
-
157
- tempfile = render_template_file(@source, context, @package.name)
158
- sourcepath = tempfile.path
159
- logger.info "Rendering template #{@source} to temporary file #{sourcepath}"
160
- recursive = false
161
- else
162
- sourcepath = @source
163
- end
164
-
165
- logger.info "--> Transferring #{sourcepath} to #{@destination} for roles: #{roles}"
134
+ pre = pre_commands(:install)
135
+ unless pre.empty?
136
+ sequence = pre; sequence = sequence.join('; ') if sequence.is_a? Array
137
+ logger.info "#{@package.name} pre-transfer commands: #{sequence} for roles: #{roles}\n"
138
+ @delivery.process @package.name, [pre].flatten, roles
139
+ end
140
+
141
+ recursive = @options[:recursive]
142
+
143
+ if options[:render]
144
+ if options[:locals]
145
+ context = {}
146
+ options[:locals].each_pair do |k,v|
147
+ if v.respond_to?(:call)
148
+ context[k] = v.call
149
+ else
150
+ context[k] = v
151
+ end
152
+ end
153
+ else
154
+ context = binding()
155
+ end
156
+
157
+ tempfile = render_template_file(@source, context, @package.name)
158
+ sourcepath = tempfile.path
159
+ logger.info "Rendering template #{@source} to temporary file #{sourcepath}"
160
+ recursive = false
161
+ else
162
+ sourcepath = @source
163
+ end
164
+
165
+ logger.info "--> Transferring #{sourcepath} to #{@destination} for roles: #{roles}"
166
166
  @delivery.transfer(@package.name, sourcepath, @destination, roles, recursive)
167
-
168
- post = post_commands(:install)
169
- unless post.empty?
170
- sequence = post; sequence = sequence.join('; ') if sequence.is_a? Array
171
- logger.info "#{@package.name} post-transfer commands: #{sequence} for roles: #{roles}\n"
172
- @delivery.process @package.name, sequence, roles
173
- end
167
+
168
+ post = post_commands(:install)
169
+ unless post.empty?
170
+ sequence = post; sequence = sequence.join('; ') if sequence.is_a? Array
171
+ logger.info "#{@package.name} post-transfer commands: #{sequence} for roles: #{roles}\n"
172
+ @delivery.process @package.name, [post].flatten, roles
173
+ end
174
174
  end
175
175
  end
176
176
  end
@@ -210,6 +210,10 @@ module Sprinkle
210
210
  def verify(description = '', &block)
211
211
  @verifications << Sprinkle::Verify.new(self, description, &block)
212
212
  end
213
+
214
+ def pacman(*names, &block)
215
+ @installers << Sprinkle::Installers::Pacman.new(self, *names, &block)
216
+ end
213
217
 
214
218
  def process(deployment, roles)
215
219
  return if meta_package?
@@ -0,0 +1,15 @@
1
+ module Sprinkle
2
+ module Verifiers
3
+ # = User Verifier
4
+ # This was added so we dont have to verify a file to see if user was created
5
+ # Defines a verify which can be used to test the existence of a user.
6
+ module Users
7
+ Sprinkle::Verify.register(Sprinkle::Verifiers::Users)
8
+
9
+ # Tests that the user exists
10
+ def has_user(user)
11
+ @commands << "id #{user}"
12
+ end
13
+ end
14
+ end
15
+ end
@@ -36,7 +36,7 @@ describe Sprinkle::Installers::Source do
36
36
 
37
37
  def create_source(source, version = nil, &block)
38
38
  @package = mock(Sprinkle::Package, :name => 'package', :version => version)
39
-
39
+
40
40
  Sprinkle::Installers::Source.new(@package, source, &block)
41
41
  end
42
42
 
@@ -113,27 +113,27 @@ describe Sprinkle::Installers::Source do
113
113
  it 'should prepare the build, installation and source archives area' do
114
114
  @installer.should_receive(:prepare).and_return []
115
115
  end
116
-
116
+
117
117
  it "should prepare the build, installation and source archives area with correct paths" do
118
- @installer.send(:prepare).should ==
118
+ @installer.send(:prepare).should ==
119
119
  [
120
120
  'mkdir -p /usr/local',
121
121
  'mkdir -p /usr/local/builds',
122
- 'mkdir -p /usr/local/archives'
122
+ 'mkdir -p /usr/local/archives'
123
123
  ]
124
124
  end
125
-
125
+
126
126
  it 'should download the source archive' do
127
127
  @installer.should_receive(:download).and_return []
128
128
  end
129
129
 
130
130
  it 'should download the source archive to the correct path' do
131
- @installer.send(:download).should ==
131
+ @installer.send(:download).should ==
132
132
  [
133
- "wget -cq --directory-prefix='/usr/local/archives' #{@source}"
133
+ "wget -cq -O '/usr/local/archives/#{@source.split('/').last}' #{@source}"
134
134
  ]
135
135
  end
136
-
136
+
137
137
  it 'should extract the source archive' do
138
138
  @installer.should_receive(:extract).and_return []
139
139
  end
@@ -148,7 +148,7 @@ describe Sprinkle::Installers::Source do
148
148
  it 'should configure the source' do
149
149
  @installer.should_receive(:configure).and_return []
150
150
  end
151
-
151
+
152
152
  it 'should configure the source in the correct path and with the correct prefix and options' do
153
153
  enable = %w( headers ssl deflate so ).inject([]) { |m, value| m << "--enable-#{value}"; m }
154
154
  disable = %w( cache proxy rewrite ).inject([]) { |m, value| m << "--disable-#{value}"; m }
@@ -159,10 +159,10 @@ describe Sprinkle::Installers::Source do
159
159
  option = %w( foo bar baz ).inject([]) { |m, value| m << "--#{value}"; m }
160
160
 
161
161
  configure_command = @installer.send(:configure).first
162
-
162
+
163
163
  configure_command.should =~ %r{^bash -c 'cd /usr/local/builds/#{@filename} && ./configure --prefix=/usr/local}
164
164
  configure_command.should =~ %r{ > #{@package.name}-configure.log 2>&1'$}
165
-
165
+
166
166
  # order of options is arbitrary in ruby 1.8 !
167
167
  configure_command.should =~ /#{enable.join(' ')}/
168
168
  configure_command.should =~ /#{disable.join(' ')}/
@@ -170,11 +170,11 @@ describe Sprinkle::Installers::Source do
170
170
  configure_command.should =~ /#{without.join(' ')}/
171
171
  configure_command.should =~ /#{option.join(' ')}/
172
172
  end
173
-
173
+
174
174
  it 'should build the source' do
175
175
  @installer.should_receive(:build).and_return []
176
176
  end
177
-
177
+
178
178
  it 'should build the source in the correct build path' do
179
179
  @installer.send(:build).should ==
180
180
  [
@@ -17,41 +17,63 @@ describe Sprinkle::Installers::Transfer do
17
17
  installer do; prefix '/usr/bin'; end
18
18
  end
19
19
  end
20
-
20
+
21
21
  def create_transfer(source, dest, options={}, &block)
22
22
  i = Sprinkle::Installers::Transfer.new(@package, source, dest, options, &block)
23
23
  i.delivery = @delivery
24
24
  i
25
25
  end
26
-
26
+
27
27
  describe 'when created' do
28
28
  it 'should accept a source and destination to install' do
29
29
  @installer.source.should == @source
30
30
  @installer.destination.should == @destination
31
31
  end
32
32
  end
33
-
33
+
34
34
  describe 'during installation' do
35
- before do
36
- @installer = create_transfer @source, @destination do
37
- pre :install, 'op1'
38
- post :install, 'op2'
35
+
36
+ context 'single pre/post commands' do
37
+ before do
38
+ @installer = create_transfer @source, @destination do
39
+ pre :install, 'op1'
40
+ post :install, 'op2'
41
+ end
42
+
43
+ @delivery = @installer.delivery
44
+ end
45
+
46
+ it "should call the pre and post install commands around the file transfer" do
47
+ @delivery.should_receive(:process).with(@package.name, ['op1'], @roles).and_return
48
+ @delivery.should_receive(:transfer).and_return
49
+ @delivery.should_receive(:process).with(@package.name, ['op2'], @roles).and_return
50
+ end
51
+
52
+ it "should call transfer with recursive defaulted to nil" do
53
+ @delivery.should_receive(:process).and_return
54
+ @delivery.should_receive(:transfer).with(@package.name, @source, @destination, @roles, nil)
55
+ end
56
+
57
+ end
58
+
59
+ context 'multiple pre/post commands' do
60
+ before do
61
+ @installer = create_transfer @source, @destination do
62
+ pre :install, 'op1', 'op1-1'
63
+ post :install, 'op2', 'op2-1'
64
+ end
65
+
66
+ @delivery = @installer.delivery
67
+ end
68
+
69
+ it "should call the pre and post install commands around the file transfer" do
70
+ @delivery.should_receive(:process).with(@package.name, ['op1', 'op1-1'], @roles).and_return
71
+ @delivery.should_receive(:transfer).and_return
72
+ @delivery.should_receive(:process).with(@package.name, ['op2', 'op2-1'], @roles).and_return
39
73
  end
40
74
 
41
- @delivery = @installer.delivery
42
75
  end
43
76
 
44
- it "should call the pre and post install commands around the file transfer" do
45
- @delivery.should_receive(:process).with(@package.name, 'op1', @roles).once.ordered.and_return
46
- @delivery.should_receive(:transfer).ordered.and_return
47
- @delivery.should_receive(:process).with(@package.name, 'op2', @roles).once.ordered.and_return
48
- end
49
-
50
- it "should call transfer with recursive defaulted to nil" do
51
- @delivery.should_receive(:process).and_return
52
- @delivery.should_receive(:transfer).with(@package.name, @source, @destination, @roles, nil)
53
- end
54
-
55
77
  after do
56
78
  @installer.process @roles
57
79
  end
@@ -65,22 +87,22 @@ describe Sprinkle::Installers::Transfer do
65
87
  end
66
88
 
67
89
  it "should render the source file as a template to a tempfile" do
68
- @tempfile = Tempfile.new("foo")
90
+ @tempfile = Tempfile.new("foo")
69
91
  @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
70
92
  @delivery.stub!(:transfer)
71
93
  end
72
-
94
+
73
95
  it "should call transfer with recursive set to false" do
74
- @tempfile = Tempfile.new("foo")
96
+ @tempfile = Tempfile.new("foo")
75
97
  @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
76
98
  @delivery.should_receive(:transfer).with(@package.name, @tempfile.path, @destination, @roles, false).ordered.and_return
77
99
  end
78
-
100
+
79
101
  after do
80
102
  @installer.process @roles
81
103
  end
82
104
  end
83
-
105
+
84
106
  describe "if the :recursive flag is explicitly set to false" do
85
107
  before do
86
108
  @installer = create_transfer @source, @destination, :recursive => false
@@ -90,7 +112,7 @@ describe Sprinkle::Installers::Transfer do
90
112
  delivery = @installer.delivery
91
113
  delivery.should_receive(:transfer).with(@package.name, @source, @destination, @roles, false).ordered.and_return
92
114
  end
93
-
115
+
94
116
  after do
95
117
  @installer.process @roles
96
118
  end
data/sprinkle.gemspec ADDED
@@ -0,0 +1,165 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "sprinkle"
8
+ s.version = "0.3.5"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Marcus Crafter"]
12
+ s.date = "2011-09-09"
13
+ s.description = "Ruby DSL based software provisioning tool"
14
+ s.email = "crafterm@redartisan.com"
15
+ s.executables = ["sprinkle"]
16
+ s.extra_rdoc_files = [
17
+ "README.markdown",
18
+ "TODO"
19
+ ]
20
+ s.files = [
21
+ "CREDITS",
22
+ "MIT-LICENSE",
23
+ "README.markdown",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/sprinkle",
27
+ "examples/packages/build_essential.rb",
28
+ "examples/packages/databases/mysql.rb",
29
+ "examples/packages/databases/sqlite3.rb",
30
+ "examples/packages/phusion.rb",
31
+ "examples/packages/ruby/rails.rb",
32
+ "examples/packages/ruby/ruby.rb",
33
+ "examples/packages/ruby/rubygems.rb",
34
+ "examples/packages/scm/git.rb",
35
+ "examples/packages/scm/subversion.rb",
36
+ "examples/packages/servers/apache.rb",
37
+ "examples/rails/README",
38
+ "examples/rails/deploy.rb",
39
+ "examples/rails/packages/database.rb",
40
+ "examples/rails/packages/essential.rb",
41
+ "examples/rails/packages/rails.rb",
42
+ "examples/rails/packages/scm.rb",
43
+ "examples/rails/packages/search.rb",
44
+ "examples/rails/packages/server.rb",
45
+ "examples/rails/rails.rb",
46
+ "examples/sprinkle/sprinkle.rb",
47
+ "lib/sprinkle.rb",
48
+ "lib/sprinkle/actors/actors.rb",
49
+ "lib/sprinkle/actors/capistrano.rb",
50
+ "lib/sprinkle/actors/local.rb",
51
+ "lib/sprinkle/actors/ssh.rb",
52
+ "lib/sprinkle/actors/vlad.rb",
53
+ "lib/sprinkle/configurable.rb",
54
+ "lib/sprinkle/deployment.rb",
55
+ "lib/sprinkle/extensions/arbitrary_options.rb",
56
+ "lib/sprinkle/extensions/array.rb",
57
+ "lib/sprinkle/extensions/blank_slate.rb",
58
+ "lib/sprinkle/extensions/dsl_accessor.rb",
59
+ "lib/sprinkle/extensions/string.rb",
60
+ "lib/sprinkle/extensions/symbol.rb",
61
+ "lib/sprinkle/installers/apt.rb",
62
+ "lib/sprinkle/installers/binary.rb",
63
+ "lib/sprinkle/installers/bsd_port.rb",
64
+ "lib/sprinkle/installers/deb.rb",
65
+ "lib/sprinkle/installers/freebsd_pkg.rb",
66
+ "lib/sprinkle/installers/freebsd_portinstall.rb",
67
+ "lib/sprinkle/installers/gem.rb",
68
+ "lib/sprinkle/installers/install_package.rb",
69
+ "lib/sprinkle/installers/installer.rb",
70
+ "lib/sprinkle/installers/mac_port.rb",
71
+ "lib/sprinkle/installers/noop.rb",
72
+ "lib/sprinkle/installers/openbsd_pkg.rb",
73
+ "lib/sprinkle/installers/opensolaris_pkg.rb",
74
+ "lib/sprinkle/installers/pacman.rb",
75
+ "lib/sprinkle/installers/push_text.rb",
76
+ "lib/sprinkle/installers/rake.rb",
77
+ "lib/sprinkle/installers/replace_text.rb",
78
+ "lib/sprinkle/installers/rpm.rb",
79
+ "lib/sprinkle/installers/runner.rb",
80
+ "lib/sprinkle/installers/smart.rb",
81
+ "lib/sprinkle/installers/source.rb",
82
+ "lib/sprinkle/installers/transfer.rb",
83
+ "lib/sprinkle/installers/user.rb",
84
+ "lib/sprinkle/installers/yum.rb",
85
+ "lib/sprinkle/installers/zypper.rb",
86
+ "lib/sprinkle/package.rb",
87
+ "lib/sprinkle/policy.rb",
88
+ "lib/sprinkle/script.rb",
89
+ "lib/sprinkle/verifiers/apt.rb",
90
+ "lib/sprinkle/verifiers/directory.rb",
91
+ "lib/sprinkle/verifiers/executable.rb",
92
+ "lib/sprinkle/verifiers/file.rb",
93
+ "lib/sprinkle/verifiers/package.rb",
94
+ "lib/sprinkle/verifiers/process.rb",
95
+ "lib/sprinkle/verifiers/rpm.rb",
96
+ "lib/sprinkle/verifiers/ruby.rb",
97
+ "lib/sprinkle/verifiers/symlink.rb",
98
+ "lib/sprinkle/verifiers/user.rb",
99
+ "lib/sprinkle/verify.rb",
100
+ "script/console",
101
+ "script/destroy",
102
+ "script/generate",
103
+ "spec/spec.opts",
104
+ "spec/spec_helper.rb",
105
+ "spec/sprinkle/actors/capistrano_spec.rb",
106
+ "spec/sprinkle/actors/local_spec.rb",
107
+ "spec/sprinkle/configurable_spec.rb",
108
+ "spec/sprinkle/deployment_spec.rb",
109
+ "spec/sprinkle/extensions/array_spec.rb",
110
+ "spec/sprinkle/extensions/string_spec.rb",
111
+ "spec/sprinkle/installers/apt_spec.rb",
112
+ "spec/sprinkle/installers/binary_spec.rb",
113
+ "spec/sprinkle/installers/bsd_port_spec.rb",
114
+ "spec/sprinkle/installers/freebsd_pkg_spec.rb",
115
+ "spec/sprinkle/installers/freebsd_portinstall_spec.rb",
116
+ "spec/sprinkle/installers/gem_spec.rb",
117
+ "spec/sprinkle/installers/installer_spec.rb",
118
+ "spec/sprinkle/installers/mac_port_spec.rb",
119
+ "spec/sprinkle/installers/noop_spec.rb",
120
+ "spec/sprinkle/installers/openbsd_pkg_spec.rb",
121
+ "spec/sprinkle/installers/opensolaris_pkg_spec.rb",
122
+ "spec/sprinkle/installers/push_text_spec.rb",
123
+ "spec/sprinkle/installers/rake_spec.rb",
124
+ "spec/sprinkle/installers/replace_text_spec.rb",
125
+ "spec/sprinkle/installers/rpm_spec.rb",
126
+ "spec/sprinkle/installers/runner_spec.rb",
127
+ "spec/sprinkle/installers/source_spec.rb",
128
+ "spec/sprinkle/installers/transfer_spec.rb",
129
+ "spec/sprinkle/installers/yum_spec.rb",
130
+ "spec/sprinkle/installers/zypper_spec.rb",
131
+ "spec/sprinkle/package_spec.rb",
132
+ "spec/sprinkle/policy_spec.rb",
133
+ "spec/sprinkle/script_spec.rb",
134
+ "spec/sprinkle/sprinkle_spec.rb",
135
+ "spec/sprinkle/verify_spec.rb",
136
+ "sprinkle.gemspec"
137
+ ]
138
+ s.homepage = "http://github.com/crafterm/sprinkle"
139
+ s.require_paths = ["lib"]
140
+ s.rubyforge_project = "sprinkle"
141
+ s.rubygems_version = "1.8.10"
142
+ s.summary = "Ruby DSL based software provisioning tool"
143
+
144
+ if s.respond_to? :specification_version then
145
+ s.specification_version = 3
146
+
147
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
148
+ s.add_development_dependency(%q<rspec>, [">= 2.5"])
149
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
150
+ s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
151
+ s.add_runtime_dependency(%q<capistrano>, [">= 2.5.5"])
152
+ else
153
+ s.add_dependency(%q<rspec>, [">= 2.5"])
154
+ s.add_dependency(%q<activesupport>, [">= 2.0.2"])
155
+ s.add_dependency(%q<highline>, [">= 1.4.0"])
156
+ s.add_dependency(%q<capistrano>, [">= 2.5.5"])
157
+ end
158
+ else
159
+ s.add_dependency(%q<rspec>, [">= 2.5"])
160
+ s.add_dependency(%q<activesupport>, [">= 2.0.2"])
161
+ s.add_dependency(%q<highline>, [">= 1.4.0"])
162
+ s.add_dependency(%q<capistrano>, [">= 2.5.5"])
163
+ end
164
+ end
165
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprinkle
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 4
10
- version: 0.3.4
9
+ - 5
10
+ version: 0.3.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Marcus Crafter
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-10 00:00:00 +10:00
19
- default_executable: sprinkle
18
+ date: 2011-09-09 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rspec
@@ -144,6 +143,7 @@ files:
144
143
  - lib/sprinkle/installers/noop.rb
145
144
  - lib/sprinkle/installers/openbsd_pkg.rb
146
145
  - lib/sprinkle/installers/opensolaris_pkg.rb
146
+ - lib/sprinkle/installers/pacman.rb
147
147
  - lib/sprinkle/installers/push_text.rb
148
148
  - lib/sprinkle/installers/rake.rb
149
149
  - lib/sprinkle/installers/replace_text.rb
@@ -167,6 +167,7 @@ files:
167
167
  - lib/sprinkle/verifiers/rpm.rb
168
168
  - lib/sprinkle/verifiers/ruby.rb
169
169
  - lib/sprinkle/verifiers/symlink.rb
170
+ - lib/sprinkle/verifiers/user.rb
170
171
  - lib/sprinkle/verify.rb
171
172
  - script/console
172
173
  - script/destroy
@@ -204,8 +205,8 @@ files:
204
205
  - spec/sprinkle/script_spec.rb
205
206
  - spec/sprinkle/sprinkle_spec.rb
206
207
  - spec/sprinkle/verify_spec.rb
208
+ - sprinkle.gemspec
207
209
  - TODO
208
- has_rdoc: true
209
210
  homepage: http://github.com/crafterm/sprinkle
210
211
  licenses: []
211
212
 
@@ -235,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
236
  requirements: []
236
237
 
237
238
  rubyforge_project: sprinkle
238
- rubygems_version: 1.5.2
239
+ rubygems_version: 1.8.10
239
240
  signing_key:
240
241
  specification_version: 3
241
242
  summary: Ruby DSL based software provisioning tool