sprinkle 0.4.2 → 0.5.0.rc1

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.
Files changed (87) hide show
  1. data/.gitignore +8 -0
  2. data/Gemfile +5 -0
  3. data/Gemfile.lock +54 -0
  4. data/README.markdown +178 -166
  5. data/Rakefile +4 -28
  6. data/bin/sprinkle +14 -1
  7. data/lib/sprinkle.rb +5 -1
  8. data/lib/sprinkle/actors/actors.rb +20 -5
  9. data/lib/sprinkle/actors/capistrano.rb +62 -36
  10. data/lib/sprinkle/actors/dummy.rb +127 -0
  11. data/lib/sprinkle/actors/local.rb +59 -17
  12. data/lib/sprinkle/actors/ssh.rb +189 -107
  13. data/lib/sprinkle/actors/vlad.rb +51 -32
  14. data/lib/sprinkle/configurable.rb +2 -1
  15. data/lib/sprinkle/deployment.rb +22 -2
  16. data/lib/sprinkle/errors/pretty_failure.rb +41 -0
  17. data/lib/sprinkle/errors/remote_command_failure.rb +24 -0
  18. data/lib/sprinkle/errors/transfer_failure.rb +28 -0
  19. data/lib/sprinkle/installers/apt.rb +17 -16
  20. data/lib/sprinkle/installers/binary.rb +23 -8
  21. data/lib/sprinkle/installers/brew.rb +17 -10
  22. data/lib/sprinkle/installers/bsd_port.rb +10 -6
  23. data/lib/sprinkle/installers/deb.rb +3 -10
  24. data/lib/sprinkle/installers/freebsd_pkg.rb +5 -11
  25. data/lib/sprinkle/installers/freebsd_portinstall.rb +8 -2
  26. data/lib/sprinkle/installers/gem.rb +9 -3
  27. data/lib/sprinkle/installers/group.rb +28 -4
  28. data/lib/sprinkle/installers/installer.rb +58 -7
  29. data/lib/sprinkle/installers/mac_port.rb +13 -6
  30. data/lib/sprinkle/installers/npm.rb +42 -0
  31. data/lib/sprinkle/installers/openbsd_pkg.rb +4 -11
  32. data/lib/sprinkle/installers/opensolaris_pkg.rb +7 -13
  33. data/lib/sprinkle/installers/package_installer.rb +33 -0
  34. data/lib/sprinkle/installers/pacman.rb +5 -13
  35. data/lib/sprinkle/installers/pear.rb +40 -0
  36. data/lib/sprinkle/installers/push_text.rb +18 -5
  37. data/lib/sprinkle/installers/rake.rb +7 -2
  38. data/lib/sprinkle/installers/reconnect.rb +29 -0
  39. data/lib/sprinkle/installers/replace_text.rb +11 -2
  40. data/lib/sprinkle/installers/rpm.rb +8 -6
  41. data/lib/sprinkle/installers/runner.rb +41 -16
  42. data/lib/sprinkle/installers/smart.rb +6 -17
  43. data/lib/sprinkle/installers/source.rb +22 -10
  44. data/lib/sprinkle/installers/thor.rb +7 -0
  45. data/lib/sprinkle/installers/transfer.rb +62 -41
  46. data/lib/sprinkle/installers/user.rb +34 -4
  47. data/lib/sprinkle/installers/yum.rb +10 -10
  48. data/lib/sprinkle/installers/zypper.rb +4 -15
  49. data/lib/sprinkle/package.rb +81 -98
  50. data/lib/sprinkle/policy.rb +11 -4
  51. data/lib/sprinkle/utility/log_recorder.rb +33 -0
  52. data/lib/sprinkle/verifiers/directory.rb +1 -1
  53. data/lib/sprinkle/verifiers/executable.rb +1 -1
  54. data/lib/sprinkle/verifiers/file.rb +11 -2
  55. data/lib/sprinkle/verifiers/package.rb +2 -14
  56. data/lib/sprinkle/verifiers/permission.rb +40 -0
  57. data/lib/sprinkle/verifiers/symlink.rb +2 -2
  58. data/lib/sprinkle/verifiers/test.rb +21 -0
  59. data/lib/sprinkle/verify.rb +3 -3
  60. data/lib/sprinkle/version.rb +3 -0
  61. data/spec/fixtures/my_file.txt +1 -0
  62. data/spec/sprinkle/actors/capistrano_spec.rb +16 -3
  63. data/spec/sprinkle/actors/local_spec.rb +24 -6
  64. data/spec/sprinkle/actors/ssh_spec.rb +38 -0
  65. data/spec/sprinkle/installers/apt_spec.rb +23 -2
  66. data/spec/sprinkle/installers/binary_spec.rb +22 -14
  67. data/spec/sprinkle/installers/brew_spec.rb +4 -4
  68. data/spec/sprinkle/installers/installer_spec.rb +36 -7
  69. data/spec/sprinkle/installers/npm_spec.rb +16 -0
  70. data/spec/sprinkle/installers/pear_spec.rb +16 -0
  71. data/spec/sprinkle/installers/push_text_spec.rb +23 -1
  72. data/spec/sprinkle/installers/rpm_spec.rb +5 -0
  73. data/spec/sprinkle/installers/runner_spec.rb +27 -11
  74. data/spec/sprinkle/installers/smart_spec.rb +60 -0
  75. data/spec/sprinkle/installers/source_spec.rb +4 -4
  76. data/spec/sprinkle/installers/transfer_spec.rb +31 -16
  77. data/spec/sprinkle/package_spec.rb +10 -2
  78. data/spec/sprinkle/policy_spec.rb +6 -0
  79. data/spec/sprinkle/verify_spec.rb +18 -4
  80. data/sprinkle.gemspec +22 -158
  81. metadata +178 -96
  82. data/TODO +0 -56
  83. data/VERSION +0 -1
  84. data/lib/sprinkle/verifiers/apt.rb +0 -21
  85. data/lib/sprinkle/verifiers/brew.rb +0 -21
  86. data/lib/sprinkle/verifiers/rpm.rb +0 -21
  87. data/lib/sprinkle/verifiers/users_groups.rb +0 -33
@@ -0,0 +1,16 @@
1
+ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
2
+
3
+ describe Sprinkle::Installers::Npm do
4
+
5
+ before do
6
+ @package = mock(Sprinkle::Package, :name => 'spec')
7
+ @installer = Sprinkle::Installers::Npm.new(@package, 'spec')
8
+ end
9
+
10
+ describe 'during installation' do
11
+ it 'should invoke the npm executer for all specified tasks' do
12
+ @install_commands = @installer.send :install_commands
13
+ @install_commands.should == "npm install --global spec"
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
2
+
3
+ describe Sprinkle::Installers::Pear do
4
+
5
+ before do
6
+ @package = mock(Sprinkle::Package, :name => 'spec')
7
+ @installer = Sprinkle::Installers::Pear.new(@package, 'spec')
8
+ end
9
+
10
+ describe 'during installation' do
11
+ it 'should invoke the pear executer for all specified tasks' do
12
+ @install_commands = @installer.send :install_commands
13
+ @install_commands.should == "pear install --alldeps spec"
14
+ end
15
+ end
16
+ end
@@ -3,11 +3,13 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::PushText do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'package')
6
+ @package = mock(Sprinkle::Package, :name => 'package', :sudo? => false)
7
7
  @options = {:sudo => true}
8
8
  end
9
9
 
10
10
  def create_text(text, path, options={}, &block)
11
+ # the old default
12
+ options.reverse_merge!(:idempotent => false)
11
13
  Sprinkle::Installers::PushText.new(@package, text, path, options, &block)
12
14
  end
13
15
 
@@ -30,6 +32,26 @@ describe Sprinkle::Installers::PushText do
30
32
  end
31
33
  @install_commands = @installer.send :install_commands
32
34
  end
35
+
36
+ describe 'with idempotent' do
37
+ before do
38
+ @installer = create_text 'another-hair-brained-idea', '/dev/mind/late-night', :idempotent => true
39
+ @install_commands = @installer.send :install_commands
40
+ end
41
+ it "should grep for existing of the string" do
42
+ @install_commands.should == %q[grep "^another-hair-brained-idea$" /dev/mind/late-night || /bin/echo -e 'another-hair-brained-idea' |tee -a /dev/mind/late-night]
43
+ end
44
+ end
45
+
46
+ describe 'with sudo' do
47
+ before do
48
+ @installer = create_text 'another-hair-brained-idea', '/dev/mind/late-night', :sudo => true
49
+ @install_commands = @installer.send :install_commands
50
+ end
51
+ it 'should invoke sudo if sudo option passed' do
52
+ @install_commands.should == %q[/bin/echo -e 'another-hair-brained-idea' |sudo tee -a /dev/mind/late-night]
53
+ end
54
+ end
33
55
 
34
56
  it 'should invoke the push text installer for all specified packages' do
35
57
  @install_commands.should == %q[/bin/echo -e 'another-hair-brained-idea' |tee -a /dev/mind/late-night]
@@ -21,6 +21,11 @@ describe Sprinkle::Installers::Rpm do
21
21
  @installer = create_rpm %w( gcc gdb g++ )
22
22
  @installer.packages.should == ['gcc', 'gdb', 'g++']
23
23
  end
24
+
25
+ it 'should accept a list of packages to install' do
26
+ @installer = Sprinkle::Installers::Rpm.new(@package, "gcc", "gdb", "g++")
27
+ @installer.packages.should == ['gcc', 'gdb', 'g++']
28
+ end
24
29
 
25
30
  end
26
31
 
@@ -3,29 +3,45 @@ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
3
3
  describe Sprinkle::Installers::Runner do
4
4
 
5
5
  before do
6
- @package = mock(Sprinkle::Package, :name => 'package')
6
+ @package = mock(Sprinkle::Package, :name => 'package', :sudo? => false)
7
7
  end
8
8
 
9
- def create_runner(cmd)
10
- Sprinkle::Installers::Runner.new(@package, cmd)
9
+ def create_runner(*cmds)
10
+ options=cmds.extract_options!
11
+ Sprinkle::Installers::Runner.new(@package, cmds, options)
11
12
  end
12
13
 
13
14
  describe 'when created' do
14
15
  it 'should accept a single cmd to run' do
15
16
  @installer = create_runner 'teste'
16
- @installer.cmd.should == 'teste'
17
+ @installer.cmds.should == ['teste']
17
18
  end
19
+
20
+ it 'should accept an array of commands to run' do
21
+ @installer = create_runner ['teste', 'world']
22
+ @installer.cmds.should == ['teste', 'world']
23
+ @installer.install_sequence.should == ['teste', 'world']
24
+ end
18
25
  end
19
26
 
20
- describe 'during execution' do
21
-
22
- before do
23
- @installer = create_runner 'teste'
24
- @install_commands = @installer.send :install_commands
25
- end
27
+ describe 'during installation' do
28
+
29
+ it 'should use sudo if specified locally' do
30
+ @installer = create_runner 'teste', :sudo => true
31
+ @install_commands = @installer.send :install_commands
32
+ @install_commands.should == ['sudo teste']
33
+ end
34
+
35
+ it "should accept multiple commands" do
36
+ @installer = create_runner 'teste', 'test2'
37
+ @install_commands = @installer.send :install_commands
38
+ @install_commands.should == ['teste','test2']
39
+ end
26
40
 
27
41
  it 'should run the given command for all specified packages' do
28
- @install_commands.should == 'teste'
42
+ @installer = create_runner 'teste'
43
+ @install_commands = @installer.send :install_commands
44
+ @install_commands.should == ['teste']
29
45
  end
30
46
  end
31
47
  end
@@ -0,0 +1,60 @@
1
+ require File.expand_path("../../spec_helper", File.dirname(__FILE__))
2
+
3
+ describe Sprinkle::Installers::Smart do
4
+
5
+ before do
6
+ @package = mock(Sprinkle::Package, :name => 'package')
7
+ end
8
+
9
+ def create_smart(pkgs, &block)
10
+ Sprinkle::Installers::Smart.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_smart 'ruby'
17
+ @installer.packages.should == [ 'ruby' ]
18
+ end
19
+
20
+ it 'should accept an array of packages to install' do
21
+ @installer = create_smart %w( gcc gdb g++ )
22
+ @installer.packages.should == ['gcc', 'gdb', 'g++']
23
+ end
24
+
25
+ it 'should accept a list of packages to install' do
26
+ @installer = Sprinkle::Installers::Smart.new(@package, "gcc", "gdb", "g++")
27
+ @installer.packages.should == ['gcc', 'gdb', 'g++']
28
+ end
29
+
30
+ end
31
+
32
+ describe 'during installation' do
33
+
34
+ before do
35
+ @installer = create_smart 'ruby' do
36
+ pre :install, 'op1'
37
+ post :install, 'op2'
38
+ end
39
+ @install_commands = @installer.send :install_commands
40
+ end
41
+
42
+ it 'should invoke the rpm installer for all specified packages' do
43
+ @install_commands.should == "smart install ruby -y 2>&1 | tee -a /var/log/smart-sprinkle"
44
+ end
45
+
46
+ it 'should automatically insert pre/post commands for the specified package' do
47
+ @installer.send(:install_sequence).should == [ 'op1',
48
+ 'smart install ruby -y 2>&1 | tee -a /var/log/smart-sprinkle', 'op2' ]
49
+ end
50
+
51
+ it 'should specify a non interactive mode to the apt installer' do
52
+ pending
53
+ end
54
+ it 'should install a specific version if defined' do
55
+ pending
56
+ end
57
+
58
+ end
59
+
60
+ end
@@ -52,22 +52,22 @@ describe Sprinkle::Installers::Source do
52
52
 
53
53
  before do
54
54
  @settings = { :prefix => '/usr/local', :archives => '/usr/local/tmp', :builds => '/usr/local/stage' }
55
+ @settings.each { |k, v| @installer.send k, v }
55
56
  end
56
57
 
57
58
  it 'should fail if no installation area has been specified' do
58
- @settings.delete(:prefix)
59
+ @installer.options[:prefix] = nil
59
60
  end
60
61
 
61
62
  it 'should fail if no build area has been specified' do
62
- @settings.delete(:builds)
63
+ @installer.options[:builds] = nil
63
64
  end
64
65
 
65
66
  it 'should fail if no source download area has been specified' do
66
- @settings.delete(:archives)
67
+ @installer.options[:archives] = nil
67
68
  end
68
69
 
69
70
  after do
70
- @settings.each { |k, v| @installer.send k, v }
71
71
  lambda { @installer.install_sequence }.should raise_error
72
72
  end
73
73
 
@@ -5,9 +5,9 @@ describe Sprinkle::Installers::Transfer do
5
5
  include Sprinkle::Deployment
6
6
 
7
7
  before do
8
- @package = mock(Sprinkle::Package, :name => 'package')
8
+ @package = mock(Sprinkle::Package, :name => 'package', :sudo? => false)
9
9
  @empty = Proc.new { }
10
- @delivery = mock(Sprinkle::Deployment, :process => true)
10
+ @delivery = mock(Sprinkle::Deployment, :install => true)
11
11
  @source = 'source'
12
12
  @destination = 'destination'
13
13
  @installer = create_transfer(@source, @destination)
@@ -33,26 +33,43 @@ describe Sprinkle::Installers::Transfer do
33
33
 
34
34
  describe 'during installation' do
35
35
 
36
+ context "setting mode and owner" do
37
+ before do
38
+ @installer = create_transfer @source, @destination do
39
+ mode "744"
40
+ owner "root"
41
+ end
42
+ @installer_commands = @installer.install_sequence
43
+ end
44
+
45
+ it "should include command to set owner" do
46
+ @installer_commands.should include("chmod 744 #{@destination}")
47
+ end
48
+
49
+ it "should include command to set mode" do
50
+ @installer_commands.should include("chown root #{@destination}")
51
+ end
52
+
53
+ end
54
+
36
55
  context 'single pre/post commands' do
37
56
  before do
38
57
  @installer = create_transfer @source, @destination do
39
58
  pre :install, 'op1'
40
59
  post :install, 'op2'
41
60
  end
42
-
61
+ @installer_commands = @installer.install_sequence
43
62
  @delivery = @installer.delivery
44
63
  end
45
64
 
46
65
  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
66
+ @installer_commands.should == ["op1",:TRANSFER, "op2"]
50
67
  end
51
68
 
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
69
+ # it "should call transfer with recursive defaulted to nil" do
70
+ # @delivery.should_receive(:process).and_return
71
+ # @delivery.should_receive(:transfer).with(@package.name, @source, @destination, @roles, nil)
72
+ # end
56
73
 
57
74
  end
58
75
 
@@ -62,14 +79,12 @@ describe Sprinkle::Installers::Transfer do
62
79
  pre :install, 'op1', 'op1-1'
63
80
  post :install, 'op2', 'op2-1'
64
81
  end
65
-
82
+ @installer_commands = @installer.install_sequence
66
83
  @delivery = @installer.delivery
67
84
  end
68
85
 
69
86
  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
87
+ @installer_commands.should == ["op1","op1-1",:TRANSFER, "op2","op2-1"]
73
88
  end
74
89
 
75
90
  end
@@ -95,7 +110,7 @@ describe Sprinkle::Installers::Transfer do
95
110
  it "should call transfer with recursive set to false" do
96
111
  @tempfile = Tempfile.new("foo")
97
112
  @installer.should_receive(:render_template_file).with(@source, anything, @package.name).and_return(@tempfile)
98
- @delivery.should_receive(:transfer).with(@package.name, @tempfile.path, @destination, @roles, false).ordered.and_return
113
+ @installer.options[:recursive].should == false
99
114
  end
100
115
 
101
116
  after do
@@ -110,7 +125,7 @@ describe Sprinkle::Installers::Transfer do
110
125
 
111
126
  it "should call transfer with recursive set to false" do
112
127
  delivery = @installer.delivery
113
- delivery.should_receive(:transfer).with(@package.name, @source, @destination, @roles, false).ordered.and_return
128
+ @installer.options[:recursive].should == false
114
129
  end
115
130
 
116
131
  after do
@@ -151,7 +151,7 @@ CODE
151
151
  pkg.installers.first.class.should == Sprinkle::Installers::Runner
152
152
  @installer = pkg.installers.first
153
153
  @install_commands = @installer.send :install_commands
154
- @install_commands.should == 'echo noop'
154
+ @install_commands.should == ['echo noop']
155
155
  end
156
156
 
157
157
  it 'should optionally accept an group installer' do
@@ -395,6 +395,12 @@ CODE
395
395
  end
396
396
 
397
397
  it 'should be able to return a dependency hierarchy tree' do
398
+ @ai, @bi, @ci, @di, @ei = @a, @b, @c, @d, @e
399
+ @b.should_receive(:instance).any_number_of_times.and_return(@bi)
400
+ @c.should_receive(:instance).any_number_of_times.and_return(@ci)
401
+ @d.should_receive(:instance).any_number_of_times.and_return(@di)
402
+ @e.should_receive(:instance).any_number_of_times.and_return(@ei)
403
+
398
404
  @a.tree.flatten.should == [ @d, @c, @b, @a ]
399
405
  @b.tree.flatten.should == [ @d, @c, @b ]
400
406
  @c.tree.flatten.should == [ @d, @c ]
@@ -435,7 +441,9 @@ CODE
435
441
  end
436
442
 
437
443
  it 'should maintain a depth count of how deep the hierarchy is' do
438
- @b.should_receive(:tree).with(2).and_return([@b])
444
+ instance=mock
445
+ @b.should_receive(:instance).and_return(instance)
446
+ instance.should_receive(:tree).with(2).and_return([@b])
439
447
  @a.tree do; end
440
448
  end
441
449
 
@@ -52,6 +52,11 @@ describe Sprinkle::Policy do
52
52
  @b = package :b, :provides => :xyz do; end
53
53
  @c = package :c, :provides => :abc do; end
54
54
  @d = package :d, :provides => :abc do; end
55
+
56
+ @a.stub!(:instance).and_return(@a)
57
+ @b.stub!(:instance).and_return(@b)
58
+ @c.stub!(:instance).and_return(@c)
59
+ @d.stub!(:instance).and_return(@d)
55
60
 
56
61
  @policy = policy :test, :roles => :app do; requires :a; end
57
62
  $terminal.stub!(:choose).and_return(:c) # stub out highline asking questions
@@ -70,6 +75,7 @@ describe Sprinkle::Policy do
70
75
  it 'should normalize (ie remove duplicates from) the installation order of all packages including dependencies' do
71
76
  @e = package :e do; requires :b; end
72
77
  @policy.requires :e
78
+ @e.stub!(:instance).and_return(@e)
73
79
 
74
80
  @a.should_receive(:process).once.and_return
75
81
  @b.should_receive(:process).once.and_return
@@ -12,9 +12,15 @@ describe Sprinkle::Verify do
12
12
  # Check that a file contains a substring
13
13
  file_contains 'my_file.txt', 'A sunny day on the lower east-side'
14
14
 
15
+ # Checks that a file matches a local file
16
+ matches_local File.join(File.dirname(__FILE__), '..', 'fixtures', 'my_file.txt'), 'my_file.txt'
17
+
15
18
  # Check a directory exists
16
19
  has_directory 'mydir'
17
20
 
21
+ # generic test
22
+ test "`version` == \"one\""
23
+
18
24
  # Check for a user
19
25
  has_user "bob"
20
26
 
@@ -73,12 +79,20 @@ describe Sprinkle::Verify do
73
79
  @verification.commands.should include("grep 'A sunny day on the lower east-side' my_file.txt")
74
80
  end
75
81
 
82
+ it 'should do a md5sum to see if a file matches local file' do
83
+ @verification.commands.should include(%{[ "X$(md5sum my_file.txt|cut -d\\ -f 1)" = "Xed20d984b757ad5291963389fc209864" ]})
84
+ end
85
+
76
86
  it 'should do a "test -d" on the has_directory check' do
77
87
  @verification.commands.should include('test -d mydir')
78
88
  end
79
89
 
80
- it 'should use id to check for user in group' do
81
- @verification.commands.should include("id -G alf | xargs -n1 echo | grep alien")
90
+ it 'should include the generic test' do
91
+ @verification.commands.should include("test `version` == \"one\"")
92
+ end
93
+
94
+ it 'should use to check for user in group' do
95
+ @verification.commands.should include("id -nG alf | xargs -n1 echo | grep alien")
82
96
  end
83
97
 
84
98
  it 'should use id to check for user' do
@@ -150,12 +164,12 @@ describe Sprinkle::Verify do
150
164
  end
151
165
 
152
166
  it 'should call process on the delivery with the correct parameters' do
153
- @delivery.should_receive(:process).with(@name, @verification.commands, [:app], true).once.and_return(true)
167
+ @delivery.should_receive(:verify).with(@verification, [:app]).once.and_return(true)
154
168
  @verification.process([:app])
155
169
  end
156
170
 
157
171
  it 'should raise Sprinkle::VerificationFailed exception when commands fail' do
158
- @delivery.should_receive(:process).once.and_return(false)
172
+ @delivery.should_receive(:verify).once.and_return(false)
159
173
  lambda { @verification.process([:app]) }.should raise_error(Sprinkle::VerificationFailed) do |error|
160
174
  error.package.should eql(@package)
161
175
  error.description.should eql('moo')
data/sprinkle.gemspec CHANGED
@@ -1,170 +1,34 @@
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
1
  Gem::Specification.new do |s|
7
- s.name = %q{sprinkle}
8
- s.version = "0.4.2"
2
+ s.name = "sprinkle"
3
+ s.version = "0.5.0.rc1"
9
4
 
10
5
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
6
  s.authors = ["Marcus Crafter"]
12
- s.date = %q{2011-10-04}
13
- s.default_executable = %q{sprinkle}
14
- s.description = %q{Ruby DSL based software provisioning tool}
15
- s.email = %q{crafterm@redartisan.com}
7
+ s.date = "2012-05-05"
8
+ s.description = "Ruby DSL based software provisioning tool"
9
+ s.email = "crafterm@redartisan.com"
16
10
  s.executables = ["sprinkle"]
17
11
  s.extra_rdoc_files = [
18
- "README.markdown",
19
- "TODO"
20
- ]
21
- s.files = [
22
- "CREDITS",
23
- "MIT-LICENSE",
24
- "README.markdown",
25
- "Rakefile",
26
- "VERSION",
27
- "bin/sprinkle",
28
- "examples/packages/build_essential.rb",
29
- "examples/packages/databases/mysql.rb",
30
- "examples/packages/databases/sqlite3.rb",
31
- "examples/packages/phusion.rb",
32
- "examples/packages/ruby/rails.rb",
33
- "examples/packages/ruby/ruby.rb",
34
- "examples/packages/ruby/rubygems.rb",
35
- "examples/packages/scm/git.rb",
36
- "examples/packages/scm/subversion.rb",
37
- "examples/packages/servers/apache.rb",
38
- "examples/rails/README",
39
- "examples/rails/deploy.rb",
40
- "examples/rails/packages/database.rb",
41
- "examples/rails/packages/essential.rb",
42
- "examples/rails/packages/rails.rb",
43
- "examples/rails/packages/scm.rb",
44
- "examples/rails/packages/search.rb",
45
- "examples/rails/packages/server.rb",
46
- "examples/rails/rails.rb",
47
- "examples/sprinkle/sprinkle.rb",
48
- "lib/sprinkle.rb",
49
- "lib/sprinkle/actors/actors.rb",
50
- "lib/sprinkle/actors/capistrano.rb",
51
- "lib/sprinkle/actors/local.rb",
52
- "lib/sprinkle/actors/ssh.rb",
53
- "lib/sprinkle/actors/vlad.rb",
54
- "lib/sprinkle/configurable.rb",
55
- "lib/sprinkle/deployment.rb",
56
- "lib/sprinkle/extensions/arbitrary_options.rb",
57
- "lib/sprinkle/extensions/array.rb",
58
- "lib/sprinkle/extensions/blank_slate.rb",
59
- "lib/sprinkle/extensions/dsl_accessor.rb",
60
- "lib/sprinkle/extensions/string.rb",
61
- "lib/sprinkle/extensions/symbol.rb",
62
- "lib/sprinkle/installers/apt.rb",
63
- "lib/sprinkle/installers/binary.rb",
64
- "lib/sprinkle/installers/brew.rb",
65
- "lib/sprinkle/installers/bsd_port.rb",
66
- "lib/sprinkle/installers/deb.rb",
67
- "lib/sprinkle/installers/freebsd_pkg.rb",
68
- "lib/sprinkle/installers/freebsd_portinstall.rb",
69
- "lib/sprinkle/installers/gem.rb",
70
- "lib/sprinkle/installers/group.rb",
71
- "lib/sprinkle/installers/install_package.rb",
72
- "lib/sprinkle/installers/installer.rb",
73
- "lib/sprinkle/installers/mac_port.rb",
74
- "lib/sprinkle/installers/openbsd_pkg.rb",
75
- "lib/sprinkle/installers/opensolaris_pkg.rb",
76
- "lib/sprinkle/installers/pacman.rb",
77
- "lib/sprinkle/installers/push_text.rb",
78
- "lib/sprinkle/installers/rake.rb",
79
- "lib/sprinkle/installers/replace_text.rb",
80
- "lib/sprinkle/installers/rpm.rb",
81
- "lib/sprinkle/installers/runner.rb",
82
- "lib/sprinkle/installers/smart.rb",
83
- "lib/sprinkle/installers/source.rb",
84
- "lib/sprinkle/installers/thor.rb",
85
- "lib/sprinkle/installers/transfer.rb",
86
- "lib/sprinkle/installers/user.rb",
87
- "lib/sprinkle/installers/yum.rb",
88
- "lib/sprinkle/installers/zypper.rb",
89
- "lib/sprinkle/package.rb",
90
- "lib/sprinkle/policy.rb",
91
- "lib/sprinkle/script.rb",
92
- "lib/sprinkle/verifiers/apt.rb",
93
- "lib/sprinkle/verifiers/brew.rb",
94
- "lib/sprinkle/verifiers/directory.rb",
95
- "lib/sprinkle/verifiers/executable.rb",
96
- "lib/sprinkle/verifiers/file.rb",
97
- "lib/sprinkle/verifiers/package.rb",
98
- "lib/sprinkle/verifiers/process.rb",
99
- "lib/sprinkle/verifiers/rpm.rb",
100
- "lib/sprinkle/verifiers/ruby.rb",
101
- "lib/sprinkle/verifiers/symlink.rb",
102
- "lib/sprinkle/verifiers/users_groups.rb",
103
- "lib/sprinkle/verify.rb",
104
- "script/console",
105
- "script/destroy",
106
- "script/generate",
107
- "spec/spec.opts",
108
- "spec/spec_helper.rb",
109
- "spec/sprinkle/actors/capistrano_spec.rb",
110
- "spec/sprinkle/actors/local_spec.rb",
111
- "spec/sprinkle/configurable_spec.rb",
112
- "spec/sprinkle/deployment_spec.rb",
113
- "spec/sprinkle/extensions/array_spec.rb",
114
- "spec/sprinkle/extensions/string_spec.rb",
115
- "spec/sprinkle/installers/apt_spec.rb",
116
- "spec/sprinkle/installers/binary_spec.rb",
117
- "spec/sprinkle/installers/brew_spec.rb",
118
- "spec/sprinkle/installers/bsd_port_spec.rb",
119
- "spec/sprinkle/installers/freebsd_pkg_spec.rb",
120
- "spec/sprinkle/installers/freebsd_portinstall_spec.rb",
121
- "spec/sprinkle/installers/gem_spec.rb",
122
- "spec/sprinkle/installers/installer_spec.rb",
123
- "spec/sprinkle/installers/mac_port_spec.rb",
124
- "spec/sprinkle/installers/openbsd_pkg_spec.rb",
125
- "spec/sprinkle/installers/opensolaris_pkg_spec.rb",
126
- "spec/sprinkle/installers/push_text_spec.rb",
127
- "spec/sprinkle/installers/rake_spec.rb",
128
- "spec/sprinkle/installers/replace_text_spec.rb",
129
- "spec/sprinkle/installers/rpm_spec.rb",
130
- "spec/sprinkle/installers/runner_spec.rb",
131
- "spec/sprinkle/installers/source_spec.rb",
132
- "spec/sprinkle/installers/thor_spec.rb",
133
- "spec/sprinkle/installers/transfer_spec.rb",
134
- "spec/sprinkle/installers/yum_spec.rb",
135
- "spec/sprinkle/installers/zypper_spec.rb",
136
- "spec/sprinkle/package_spec.rb",
137
- "spec/sprinkle/policy_spec.rb",
138
- "spec/sprinkle/script_spec.rb",
139
- "spec/sprinkle/sprinkle_spec.rb",
140
- "spec/sprinkle/verify_spec.rb",
141
- "sprinkle.gemspec"
12
+ "README.markdown"
142
13
  ]
143
- s.homepage = %q{http://github.com/crafterm/sprinkle}
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+
19
+ s.homepage = "http://github.com/crafterm/sprinkle"
144
20
  s.require_paths = ["lib"]
145
- s.rubyforge_project = %q{sprinkle}
146
- s.rubygems_version = %q{1.4.2}
147
- s.summary = %q{Ruby DSL based software provisioning tool}
21
+ s.rubyforge_project = "sprinkle"
22
+ s.rubygems_version = "1.8.15"
23
+ s.summary = "Ruby DSL based software provisioning tool"
148
24
 
149
- if s.respond_to? :specification_version then
150
- s.specification_version = 3
25
+ s.add_development_dependency(%q<rspec>, [">= 2.5"])
26
+ s.add_development_dependency(%q<rake>, [">= 0.8.7"])
27
+ s.add_development_dependency(%q<rdoc>, [">= 3.12"])
28
+ s.add_runtime_dependency(%q<open4>, [">= 1.1.0"])
29
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
30
+ s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
31
+ s.add_runtime_dependency(%q<capistrano>, [">= 2.5.5"])
151
32
 
152
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
153
- s.add_development_dependency(%q<rspec>, [">= 2.5"])
154
- s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
155
- s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
156
- s.add_runtime_dependency(%q<capistrano>, [">= 2.5.5"])
157
- else
158
- s.add_dependency(%q<rspec>, [">= 2.5"])
159
- s.add_dependency(%q<activesupport>, [">= 2.0.2"])
160
- s.add_dependency(%q<highline>, [">= 1.4.0"])
161
- s.add_dependency(%q<capistrano>, [">= 2.5.5"])
162
- end
163
- else
164
- s.add_dependency(%q<rspec>, [">= 2.5"])
165
- s.add_dependency(%q<activesupport>, [">= 2.0.2"])
166
- s.add_dependency(%q<highline>, [">= 1.4.0"])
167
- s.add_dependency(%q<capistrano>, [">= 2.5.5"])
168
- end
169
33
  end
170
34