mitchellh-sprinkle 0.1.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.
Files changed (70) hide show
  1. data/CREDITS +16 -0
  2. data/History.txt +4 -0
  3. data/MIT-LICENSE +20 -0
  4. data/Manifest.txt +68 -0
  5. data/README.txt +224 -0
  6. data/Rakefile +4 -0
  7. data/bin/sprinkle +86 -0
  8. data/config/hoe.rb +70 -0
  9. data/config/requirements.rb +17 -0
  10. data/examples/merb/deploy.rb +5 -0
  11. data/examples/rails/README +15 -0
  12. data/examples/rails/deploy.rb +2 -0
  13. data/examples/rails/packages/database.rb +9 -0
  14. data/examples/rails/packages/essential.rb +6 -0
  15. data/examples/rails/packages/rails.rb +28 -0
  16. data/examples/rails/packages/search.rb +11 -0
  17. data/examples/rails/packages/server.rb +28 -0
  18. data/examples/rails/rails.rb +71 -0
  19. data/examples/sprinkle/sprinkle.rb +38 -0
  20. data/lib/sprinkle/actors/actors.rb +17 -0
  21. data/lib/sprinkle/actors/capistrano.rb +117 -0
  22. data/lib/sprinkle/actors/vlad.rb +65 -0
  23. data/lib/sprinkle/configurable.rb +27 -0
  24. data/lib/sprinkle/deployment.rb +73 -0
  25. data/lib/sprinkle/extensions/arbitrary_options.rb +10 -0
  26. data/lib/sprinkle/extensions/array.rb +5 -0
  27. data/lib/sprinkle/extensions/blank_slate.rb +5 -0
  28. data/lib/sprinkle/extensions/dsl_accessor.rb +15 -0
  29. data/lib/sprinkle/extensions/string.rb +10 -0
  30. data/lib/sprinkle/extensions/symbol.rb +7 -0
  31. data/lib/sprinkle/installers/apt.rb +51 -0
  32. data/lib/sprinkle/installers/gem.rb +61 -0
  33. data/lib/sprinkle/installers/installer.rb +120 -0
  34. data/lib/sprinkle/installers/rake.rb +30 -0
  35. data/lib/sprinkle/installers/rpm.rb +37 -0
  36. data/lib/sprinkle/installers/source.rb +179 -0
  37. data/lib/sprinkle/package.rb +127 -0
  38. data/lib/sprinkle/policy.rb +85 -0
  39. data/lib/sprinkle/script.rb +13 -0
  40. data/lib/sprinkle/verifiers/directory.rb +11 -0
  41. data/lib/sprinkle/verifiers/executable.rb +17 -0
  42. data/lib/sprinkle/verifiers/file.rb +11 -0
  43. data/lib/sprinkle/verifiers/symlink.rb +15 -0
  44. data/lib/sprinkle/verify.rb +55 -0
  45. data/lib/sprinkle/version.rb +9 -0
  46. data/lib/sprinkle.rb +32 -0
  47. data/script/destroy +14 -0
  48. data/script/generate +14 -0
  49. data/spec/spec.opts +1 -0
  50. data/spec/spec_helper.rb +17 -0
  51. data/spec/sprinkle/actors/capistrano_spec.rb +170 -0
  52. data/spec/sprinkle/configurable_spec.rb +46 -0
  53. data/spec/sprinkle/deployment_spec.rb +80 -0
  54. data/spec/sprinkle/extensions/array_spec.rb +19 -0
  55. data/spec/sprinkle/extensions/string_spec.rb +21 -0
  56. data/spec/sprinkle/installers/apt_spec.rb +74 -0
  57. data/spec/sprinkle/installers/gem_spec.rb +75 -0
  58. data/spec/sprinkle/installers/installer_spec.rb +151 -0
  59. data/spec/sprinkle/installers/rpm_spec.rb +50 -0
  60. data/spec/sprinkle/installers/source_spec.rb +331 -0
  61. data/spec/sprinkle/package_spec.rb +422 -0
  62. data/spec/sprinkle/policy_spec.rb +126 -0
  63. data/spec/sprinkle/script_spec.rb +51 -0
  64. data/spec/sprinkle/sprinkle_spec.rb +25 -0
  65. data/spec/sprinkle/verify_spec.rb +137 -0
  66. data/sprinkle.gemspec +43 -0
  67. data/tasks/deployment.rake +34 -0
  68. data/tasks/environment.rake +7 -0
  69. data/tasks/rspec.rake +21 -0
  70. metadata +160 -0
@@ -0,0 +1,137 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe Sprinkle::Verify do
4
+ before do
5
+ @name = :package
6
+ @package = package @name do
7
+ gem 'nonexistent'
8
+ verify 'moo' do
9
+ # Check a file exists
10
+ has_file 'my_file.txt'
11
+
12
+ # Check a directory exists
13
+ has_directory 'mydir'
14
+
15
+ # Check a symlink exists
16
+ has_symlink 'mypointer'
17
+
18
+ # Check a symlink points to a certain file
19
+ has_symlink 'mypointer', 'myfile'
20
+
21
+ # Check if an executable exists
22
+ has_executable '/usr/bin/ruby'
23
+
24
+ # Check if a global executable exists (in PATH)
25
+ has_executable 'rails'
26
+ end
27
+ end
28
+ @verification = @package.verifications[0]
29
+ @delivery = mock(Sprinkle::Deployment, :process => true)
30
+ @verification.delivery = @delivery
31
+ end
32
+
33
+ describe 'when created' do
34
+ it 'should raise error without a block' do
35
+ lambda { Verify.new(nil, '') }.should raise_error
36
+ end
37
+ end
38
+
39
+ describe 'with checks' do
40
+ it 'should do a "test -f" on the has_file check' do
41
+ @verification.commands.should include('test -f my_file.txt')
42
+ end
43
+
44
+ it 'should do a "test -d" on the has_directory check' do
45
+ @verification.commands.should include('test -d mydir')
46
+ end
47
+
48
+ it 'should do a "test -L" to check something is a symbolic link' do
49
+ @verification.commands.should include('test -L mypointer')
50
+ end
51
+
52
+ it 'should do a test equality to check a symlink points to a specific file' do
53
+ @verification.commands.should include("test 'myfile' = `readlink mypointer`")
54
+ end
55
+
56
+ it 'should do a "test -x" to check for an executable' do
57
+ @verification.commands.should include("test -x /usr/bin/ruby")
58
+ end
59
+
60
+ it 'should test the "which" command to look for a global executable' do
61
+ @verification.commands.should include('[ -n "`which rails`"]')
62
+ end
63
+ end
64
+
65
+ describe 'with configurations' do
66
+ # Make sure it includes Sprinkle::Configurable
67
+ it 'should respond to configurable methods' do
68
+ @verification.should respond_to(:defaults)
69
+ end
70
+
71
+ it 'should default padding option to 4' do
72
+ @verification.padding.should eql(4)
73
+ end
74
+ end
75
+
76
+ describe 'with process' do
77
+ it 'should raise an error when no delivery mechanism is set' do
78
+ @verification.instance_variable_set(:@delivery, nil)
79
+ lambda { @verification.process([]) }.should raise_error
80
+ end
81
+
82
+ describe 'when not testing' do
83
+ before do
84
+ # To be explicit
85
+ Sprinkle::OPTIONS[:testing] = false
86
+ end
87
+
88
+ it 'should call process on the delivery with the correct parameters' do
89
+ @delivery.should_receive(:process).with(@name, @verification.commands, [:app], true).once.and_return(true)
90
+ @verification.process([:app])
91
+ end
92
+
93
+ it 'should raise Sprinkle::VerificationFailed exception when commands fail' do
94
+ @delivery.should_receive(:process).once.and_return(false)
95
+ lambda { @verification.process([:app]) }.should raise_error(Sprinkle::VerificationFailed) do |error|
96
+ error.package.should eql(@package)
97
+ error.description.should eql('moo')
98
+ end
99
+ end
100
+ end
101
+
102
+ describe 'when testing' do
103
+ before do
104
+ Sprinkle::OPTIONS[:testing] = true
105
+ @logger = mock(ActiveSupport::BufferedLogger, :debug => true, :debug? => true)
106
+ end
107
+
108
+ it 'should not call process on the delivery' do
109
+ @delivery.should_not_receive(:process)
110
+ end
111
+
112
+ it 'should print the install sequence to the console' do
113
+ @verification.should_receive(:logger).twice.and_return(@logger)
114
+ end
115
+
116
+ after do
117
+ @verification.process([:app])
118
+ Sprinkle::OPTIONS[:testing] = false
119
+ end
120
+ end
121
+ end
122
+
123
+ describe 'with registering new verification modules' do
124
+ module MyModule
125
+ def rawr; end
126
+ end
127
+
128
+ it 'should not respond to rawr initially' do
129
+ @verification.should_not respond_to(:rawr)
130
+ end
131
+
132
+ it 'should respond to rawr after registering the module' do
133
+ Sprinkle::Verify.register(MyModule)
134
+ @verification.should respond_to(:rawr)
135
+ end
136
+ end
137
+ end
data/sprinkle.gemspec ADDED
@@ -0,0 +1,43 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{sprinkle}
3
+ s.version = "0.1.5"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Marcus Crafter"]
7
+ s.date = %q{2008-07-16}
8
+ s.default_executable = %q{sprinkle}
9
+ s.description = %q{Ruby DSL based software provisioning tool}
10
+ s.email = ["crafterm@redartisan.com"]
11
+ s.executables = ["sprinkle"]
12
+ s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
13
+ s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.txt", "Rakefile", "bin/sprinkle", "config/hoe.rb", "config/requirements.rb", "examples/merb/deploy.rb", "examples/rails/README", "examples/rails/deploy.rb", "examples/rails/packages/database.rb", "examples/rails/packages/essential.rb", "examples/rails/packages/rails.rb", "examples/rails/packages/search.rb", "examples/rails/packages/server.rb", "examples/rails/rails.rb", "examples/sprinkle/sprinkle.rb", "lib/sprinkle.rb", "lib/sprinkle/actors/actors.rb", "lib/sprinkle/actors/capistrano.rb", "lib/sprinkle/actors/vlad.rb", "lib/sprinkle/configurable.rb", "lib/sprinkle/deployment.rb", "lib/sprinkle/extensions/arbitrary_options.rb", "lib/sprinkle/extensions/array.rb", "lib/sprinkle/extensions/blank_slate.rb", "lib/sprinkle/extensions/dsl_accessor.rb", "lib/sprinkle/extensions/string.rb", "lib/sprinkle/extensions/symbol.rb", "lib/sprinkle/installers/apt.rb", "lib/sprinkle/installers/gem.rb", "lib/sprinkle/installers/installer.rb", "lib/sprinkle/installers/rake.rb", "lib/sprinkle/installers/rpm.rb", "lib/sprinkle/installers/source.rb", "lib/sprinkle/package.rb", "lib/sprinkle/policy.rb", "lib/sprinkle/script.rb", "lib/sprinkle/verifiers/directory.rb", "lib/sprinkle/verifiers/executable.rb", "lib/sprinkle/verifiers/file.rb", "lib/sprinkle/verifiers/symlink.rb", "lib/sprinkle/verify.rb", "lib/sprinkle/version.rb", "script/destroy", "script/generate", "spec/spec.opts", "spec/spec_helper.rb", "spec/sprinkle/actors/capistrano_spec.rb", "spec/sprinkle/configurable_spec.rb", "spec/sprinkle/deployment_spec.rb", "spec/sprinkle/extensions/array_spec.rb", "spec/sprinkle/extensions/string_spec.rb", "spec/sprinkle/installers/apt_spec.rb", "spec/sprinkle/installers/gem_spec.rb", "spec/sprinkle/installers/installer_spec.rb", "spec/sprinkle/installers/rpm_spec.rb", "spec/sprinkle/installers/source_spec.rb", "spec/sprinkle/package_spec.rb", "spec/sprinkle/policy_spec.rb", "spec/sprinkle/script_spec.rb", "spec/sprinkle/sprinkle_spec.rb", "spec/sprinkle/verify_spec.rb", "sprinkle.gemspec", "tasks/deployment.rake", "tasks/environment.rake", "tasks/rspec.rake"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://sprinkle.rubyforge.org}
16
+ s.rdoc_options = ["--main", "README.txt"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{sprinkle}
19
+ s.rubygems_version = %q{1.2.0}
20
+ s.summary = %q{Ruby DSL based software provisioning tool}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if current_version >= 3 then
27
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.0.2"])
28
+ s.add_runtime_dependency(%q<highline>, [">= 1.4.0"])
29
+ s.add_runtime_dependency(%q<capistrano>, [">= 2.2.0"])
30
+ s.add_development_dependency(%q<hoe>, [">= 1.7.0"])
31
+ else
32
+ s.add_dependency(%q<activesupport>, [">= 2.0.2"])
33
+ s.add_dependency(%q<highline>, [">= 1.4.0"])
34
+ s.add_dependency(%q<capistrano>, [">= 2.2.0"])
35
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
36
+ end
37
+ else
38
+ s.add_dependency(%q<activesupport>, [">= 2.0.2"])
39
+ s.add_dependency(%q<highline>, [">= 1.4.0"])
40
+ s.add_dependency(%q<capistrano>, [">= 2.2.0"])
41
+ s.add_dependency(%q<hoe>, [">= 1.7.0"])
42
+ end
43
+ end
@@ -0,0 +1,34 @@
1
+ desc 'Release the website and new gem version'
2
+ task :deploy => [:check_version, :website, :release] do
3
+ puts "Remember to create SVN tag:"
4
+ puts "svn copy svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/trunk " +
5
+ "svn+ssh://#{rubyforge_username}@rubyforge.org/var/svn/#{PATH}/tags/REL-#{VERS} "
6
+ puts "Suggested comment:"
7
+ puts "Tagging release #{CHANGES}"
8
+ end
9
+
10
+ desc 'Runs tasks website_generate and install_gem as a local deployment of the gem'
11
+ task :local_deploy => [:website_generate, :install_gem]
12
+
13
+ task :check_version do
14
+ unless ENV['VERSION']
15
+ puts 'Must pass a VERSION=x.y.z release version'
16
+ exit
17
+ end
18
+ unless ENV['VERSION'] == VERS
19
+ puts "Please update your version.rb to match the release version, currently #{VERS}"
20
+ exit
21
+ end
22
+ end
23
+
24
+ desc 'Install the package as a gem, without generating documentation(ri/rdoc)'
25
+ task :install_gem_no_doc => [:clean, :package] do
26
+ sh "#{'sudo ' unless Hoe::WINDOZE }gem install pkg/*.gem --no-rdoc --no-ri"
27
+ end
28
+
29
+ namespace :manifest do
30
+ desc 'Recreate Manifest.txt to include ALL files'
31
+ task :refresh do
32
+ `rake check_manifest | patch -p0 > Manifest.txt`
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ task :ruby_env do
2
+ RUBY_APP = if RUBY_PLATFORM =~ /java/
3
+ "jruby"
4
+ else
5
+ "ruby"
6
+ end unless defined? RUBY_APP
7
+ end
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems'
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
metadata ADDED
@@ -0,0 +1,160 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mitchellh-sprinkle
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
+ platform: ruby
6
+ authors:
7
+ - Marcus Crafter
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-16 00:00:00 -07:00
13
+ default_executable: sprinkle
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.2
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: highline
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.4.0
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: capistrano
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.2.0
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: hoe
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 1.7.0
50
+ version:
51
+ description: Ruby DSL based software provisioning tool
52
+ email:
53
+ - crafterm@redartisan.com
54
+ executables:
55
+ - sprinkle
56
+ extensions: []
57
+
58
+ extra_rdoc_files:
59
+ - History.txt
60
+ - Manifest.txt
61
+ - README.txt
62
+ files:
63
+ - CREDITS
64
+ - History.txt
65
+ - MIT-LICENSE
66
+ - Manifest.txt
67
+ - README.txt
68
+ - Rakefile
69
+ - bin/sprinkle
70
+ - config/hoe.rb
71
+ - config/requirements.rb
72
+ - examples/merb/deploy.rb
73
+ - examples/rails/README
74
+ - examples/rails/deploy.rb
75
+ - examples/rails/packages/database.rb
76
+ - examples/rails/packages/essential.rb
77
+ - examples/rails/packages/rails.rb
78
+ - examples/rails/packages/search.rb
79
+ - examples/rails/packages/server.rb
80
+ - examples/rails/rails.rb
81
+ - examples/sprinkle/sprinkle.rb
82
+ - lib/sprinkle.rb
83
+ - lib/sprinkle/actors/actors.rb
84
+ - lib/sprinkle/actors/capistrano.rb
85
+ - lib/sprinkle/actors/vlad.rb
86
+ - lib/sprinkle/configurable.rb
87
+ - lib/sprinkle/deployment.rb
88
+ - lib/sprinkle/extensions/arbitrary_options.rb
89
+ - lib/sprinkle/extensions/array.rb
90
+ - lib/sprinkle/extensions/blank_slate.rb
91
+ - lib/sprinkle/extensions/dsl_accessor.rb
92
+ - lib/sprinkle/extensions/string.rb
93
+ - lib/sprinkle/extensions/symbol.rb
94
+ - lib/sprinkle/installers/apt.rb
95
+ - lib/sprinkle/installers/gem.rb
96
+ - lib/sprinkle/installers/installer.rb
97
+ - lib/sprinkle/installers/rake.rb
98
+ - lib/sprinkle/installers/rpm.rb
99
+ - lib/sprinkle/installers/source.rb
100
+ - lib/sprinkle/package.rb
101
+ - lib/sprinkle/policy.rb
102
+ - lib/sprinkle/script.rb
103
+ - lib/sprinkle/verifiers/directory.rb
104
+ - lib/sprinkle/verifiers/executable.rb
105
+ - lib/sprinkle/verifiers/file.rb
106
+ - lib/sprinkle/verifiers/symlink.rb
107
+ - lib/sprinkle/verify.rb
108
+ - lib/sprinkle/version.rb
109
+ - script/destroy
110
+ - script/generate
111
+ - spec/spec.opts
112
+ - spec/spec_helper.rb
113
+ - spec/sprinkle/actors/capistrano_spec.rb
114
+ - spec/sprinkle/configurable_spec.rb
115
+ - spec/sprinkle/deployment_spec.rb
116
+ - spec/sprinkle/extensions/array_spec.rb
117
+ - spec/sprinkle/extensions/string_spec.rb
118
+ - spec/sprinkle/installers/apt_spec.rb
119
+ - spec/sprinkle/installers/gem_spec.rb
120
+ - spec/sprinkle/installers/installer_spec.rb
121
+ - spec/sprinkle/installers/rpm_spec.rb
122
+ - spec/sprinkle/installers/source_spec.rb
123
+ - spec/sprinkle/package_spec.rb
124
+ - spec/sprinkle/policy_spec.rb
125
+ - spec/sprinkle/script_spec.rb
126
+ - spec/sprinkle/sprinkle_spec.rb
127
+ - spec/sprinkle/verify_spec.rb
128
+ - sprinkle.gemspec
129
+ - tasks/deployment.rake
130
+ - tasks/environment.rake
131
+ - tasks/rspec.rake
132
+ has_rdoc: true
133
+ homepage: http://sprinkle.rubyforge.org
134
+ post_install_message:
135
+ rdoc_options:
136
+ - --main
137
+ - README.txt
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: "0"
145
+ version:
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: "0"
151
+ version:
152
+ requirements: []
153
+
154
+ rubyforge_project: sprinkle
155
+ rubygems_version: 1.2.0
156
+ signing_key:
157
+ specification_version: 2
158
+ summary: Ruby DSL based software provisioning tool
159
+ test_files: []
160
+