auser-sprinkle 0.1.5 → 0.1.6
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/Manifest.txt +4 -2
- data/{README.rdoc → README.txt} +0 -0
- data/config/hoe.rb +2 -2
- data/lib/sprinkle.rb +5 -1
- data/lib/sprinkle/actors/actors.rb +17 -0
- data/lib/sprinkle/actors/capistrano.rb +31 -3
- data/lib/sprinkle/actors/vlad.rb +29 -3
- data/lib/sprinkle/configurable.rb +4 -1
- data/lib/sprinkle/deployment.rb +46 -6
- data/lib/sprinkle/extensions/arbitrary_options.rb +1 -1
- data/lib/sprinkle/extensions/array.rb +1 -3
- data/lib/sprinkle/extensions/blank_slate.rb +1 -1
- data/lib/sprinkle/extensions/dsl_accessor.rb +1 -1
- data/lib/sprinkle/extensions/string.rb +1 -1
- data/lib/sprinkle/extensions/symbol.rb +1 -1
- data/lib/sprinkle/installers/apt.rb +29 -3
- data/lib/sprinkle/installers/gem.rb +32 -4
- data/lib/sprinkle/installers/installer.rb +60 -14
- data/lib/sprinkle/installers/rake.rb +15 -2
- data/lib/sprinkle/installers/rpm.rb +20 -3
- data/lib/sprinkle/installers/source.rb +74 -16
- data/lib/sprinkle/package.rb +93 -1
- data/lib/sprinkle/policy.rb +42 -2
- data/lib/sprinkle/script.rb +11 -1
- data/lib/sprinkle/verifiers/directory.rb +5 -0
- data/lib/sprinkle/verifiers/executable.rb +20 -1
- data/lib/sprinkle/verifiers/file.rb +9 -0
- data/lib/sprinkle/verifiers/process.rb +21 -0
- data/lib/sprinkle/verifiers/ruby.rb +19 -0
- data/lib/sprinkle/verifiers/symlink.rb +15 -0
- data/lib/sprinkle/verify.rb +63 -4
- data/lib/sprinkle/version.rb +1 -1
- data/spec/sprinkle/verify_spec.rb +15 -1
- data/sprinkle.gemspec +6 -6
- metadata +9 -4
- data/examples/merb/deploy.rb +0 -5
@@ -1,8 +1,17 @@
|
|
1
1
|
module Sprinkle
|
2
2
|
module Verifiers
|
3
|
+
# = File Verifier
|
4
|
+
#
|
5
|
+
# Contains a verifier to check the existance of a file.
|
6
|
+
#
|
7
|
+
# == Example Usage
|
8
|
+
#
|
9
|
+
# verify { has_file '/etc/apache2/apache2.conf' }
|
10
|
+
#
|
3
11
|
module File
|
4
12
|
Sprinkle::Verify.register(Sprinkle::Verifiers::File)
|
5
13
|
|
14
|
+
# Checks to make sure <tt>path</tt> is a file on the remote server.
|
6
15
|
def has_file(path)
|
7
16
|
@commands << "test -f #{path}"
|
8
17
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Sprinkle
|
2
|
+
module Verifiers
|
3
|
+
# = Process Verifier
|
4
|
+
#
|
5
|
+
# Contains a verifier to check that a process is running.
|
6
|
+
#
|
7
|
+
# == Example Usage
|
8
|
+
#
|
9
|
+
# verify { has_process 'httpd' }
|
10
|
+
#
|
11
|
+
module Process
|
12
|
+
Sprinkle::Verify.register(Sprinkle::Verifiers::Process)
|
13
|
+
|
14
|
+
# Checks to make sure <tt>process</tt> is a process running
|
15
|
+
# on the remote server.
|
16
|
+
def has_process(process)
|
17
|
+
@commands << "ps aux | grep '#{process}' | grep -v grep"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sprinkle
|
2
|
+
module Verifiers
|
3
|
+
# = Ruby Verifiers
|
4
|
+
#
|
5
|
+
# The verifiers in this module are ruby specific.
|
6
|
+
module Ruby
|
7
|
+
Sprinkle::Verify.register(Sprinkle::Verifiers::Ruby)
|
8
|
+
|
9
|
+
# Checks if ruby can require the <tt>files</tt> given. <tt>rubygems</tt>
|
10
|
+
# is always included first.
|
11
|
+
def ruby_can_load(*files)
|
12
|
+
# Always include rubygems first
|
13
|
+
files = files.unshift('rubygems').collect { |x| "require '#{x}'" }
|
14
|
+
|
15
|
+
@commands << "ruby -e \"#{files.join(';')}\""
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,8 +1,23 @@
|
|
1
1
|
module Sprinkle
|
2
2
|
module Verifiers
|
3
|
+
# = Symlink Verifier
|
4
|
+
#
|
5
|
+
# Contains a verifier to check the existance of a symbolic link.
|
6
|
+
#
|
7
|
+
# == Example Usage
|
8
|
+
#
|
9
|
+
# First, checking for the existence of a symlink:
|
10
|
+
#
|
11
|
+
# verify { has_symlink '/usr/special/secret/pointer' }
|
12
|
+
#
|
13
|
+
# Second, checking that the symlink points to a specific place:
|
14
|
+
#
|
15
|
+
# verify { has_symlink '/usr/special/secret/pointer', '/usr/local/realfile' }
|
3
16
|
module Symlink
|
4
17
|
Sprinkle::Verify.register(Sprinkle::Verifiers::Symlink)
|
5
18
|
|
19
|
+
# Checks that <tt>symlink</tt> is a symbolic link. If <tt>file</tt> is
|
20
|
+
# given, it checks that <tt>symlink</tt> points to <tt>file</tt>
|
6
21
|
def has_symlink(symlink, file = nil)
|
7
22
|
if file.nil?
|
8
23
|
@commands << "test -L #{symlink}"
|
data/lib/sprinkle/verify.rb
CHANGED
@@ -1,7 +1,66 @@
|
|
1
1
|
module Sprinkle
|
2
|
+
# = Verification Methods
|
3
|
+
#
|
4
|
+
# As documented in Sprinkle::Package, you may define a block on a package
|
5
|
+
# which verifies that a package was installed correctly. If this verification
|
6
|
+
# block fails, Sprinkle will stop the script gracefully, raising the error.
|
7
|
+
#
|
8
|
+
# In addition to checking post install if it was successfully, verification
|
9
|
+
# blocks are also ran before an install to see if a package is <em>already</em>
|
10
|
+
# installed. If this is the case, the package is skipped and Sprinkle continues
|
11
|
+
# with the next package. This behavior can be overriden by setting the -f flag on
|
12
|
+
# the sprinkle script or setting Sprinkle::OPTIONS[:force] to true if you're
|
13
|
+
# using sprinkle programmatically.
|
14
|
+
#
|
15
|
+
# == An Example
|
16
|
+
#
|
17
|
+
# The following verifies that rails was installed correctly be checking to see
|
18
|
+
# if the 'rails' command is available on the command line:
|
19
|
+
#
|
20
|
+
# package :rails do
|
21
|
+
# gem 'rails'
|
22
|
+
#
|
23
|
+
# verify do
|
24
|
+
# has_executable 'rails'
|
25
|
+
# end
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# == Available Verifiers
|
29
|
+
#
|
30
|
+
# There are a variety of available methods for use in the verification block.
|
31
|
+
# The standard methods are defined in the Sprinkle::Verifiers module, so see
|
32
|
+
# their corresponding documentation.
|
33
|
+
#
|
34
|
+
# == Custom Verifiers
|
35
|
+
#
|
36
|
+
# If you feel that the built-in verifiers do not offer a certain aspect of
|
37
|
+
# verification which you need, you may create your own verifier! Simply wrap
|
38
|
+
# any method in a module which you want to use:
|
39
|
+
#
|
40
|
+
# module MagicBeansVerifier
|
41
|
+
# def has_magic_beans(sauce)
|
42
|
+
# @commands << '[ -z "`echo $' + sauce + '`"]'
|
43
|
+
# end
|
44
|
+
# end
|
45
|
+
#
|
46
|
+
# The method can append as many commands as it wishes to the @commands array.
|
47
|
+
# These commands will be run on the remote server and <b>MUST</b> give an
|
48
|
+
# exit status of 0 if successful or other if unsuccessful.
|
49
|
+
#
|
50
|
+
# To register your verifier, call the register method on Sprinkle::Verify:
|
51
|
+
#
|
52
|
+
# Sprinle::Verify.register(MagicBeansVerifier)
|
53
|
+
#
|
54
|
+
# And now you may use it like any other verifier:
|
55
|
+
#
|
56
|
+
# package :magic_beans do
|
57
|
+
# gem 'magic_beans'
|
58
|
+
#
|
59
|
+
# verify { has_magic_beans('ranch') }
|
60
|
+
# end
|
2
61
|
class Verify
|
3
62
|
include Sprinkle::Configurable
|
4
|
-
attr_accessor :package, :description, :commands
|
63
|
+
attr_accessor :package, :description, :commands #:nodoc:
|
5
64
|
|
6
65
|
class <<self
|
7
66
|
# Register a verification module
|
@@ -10,7 +69,7 @@ module Sprinkle
|
|
10
69
|
end
|
11
70
|
end
|
12
71
|
|
13
|
-
def initialize(package, description = '', &block)
|
72
|
+
def initialize(package, description = '', &block) #:nodoc:
|
14
73
|
raise 'Verify requires a block.' unless block
|
15
74
|
|
16
75
|
@package = package
|
@@ -22,7 +81,7 @@ module Sprinkle
|
|
22
81
|
self.instance_eval(&block)
|
23
82
|
end
|
24
83
|
|
25
|
-
def process(roles, pre = false)
|
84
|
+
def process(roles, pre = false) #:nodoc:
|
26
85
|
assert_delivery
|
27
86
|
|
28
87
|
description = @description.empty? ? @package.name : @description
|
@@ -42,7 +101,7 @@ module Sprinkle
|
|
42
101
|
end
|
43
102
|
end
|
44
103
|
|
45
|
-
class VerificationFailed < Exception
|
104
|
+
class VerificationFailed < Exception #:nodoc:
|
46
105
|
attr_accessor :package, :description
|
47
106
|
|
48
107
|
def initialize(package, description)
|
data/lib/sprinkle/version.rb
CHANGED
@@ -23,6 +23,12 @@ describe Sprinkle::Verify do
|
|
23
23
|
|
24
24
|
# Check if a global executable exists (in PATH)
|
25
25
|
has_executable 'rails'
|
26
|
+
|
27
|
+
# Check for a process
|
28
|
+
has_process 'httpd'
|
29
|
+
|
30
|
+
# Check that ruby can include files
|
31
|
+
ruby_can_load 'a', 'b', 'c'
|
26
32
|
end
|
27
33
|
end
|
28
34
|
@verification = @package.verifications[0]
|
@@ -58,7 +64,15 @@ describe Sprinkle::Verify do
|
|
58
64
|
end
|
59
65
|
|
60
66
|
it 'should test the "which" command to look for a global executable' do
|
61
|
-
@verification.commands.should include('[ -n "`which rails
|
67
|
+
@verification.commands.should include('[ -n "`echo \`which rails\``" ]')
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should test the process list to find a process' do
|
71
|
+
@verification.commands.should include("ps aux | grep 'httpd' | grep -v grep")
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'should check if ruby can include a, b, c' do
|
75
|
+
@verification.commands.should include("ruby -e \"require 'rubygems';require 'a';require 'b';require 'c'\"")
|
62
76
|
end
|
63
77
|
end
|
64
78
|
|
data/sprinkle.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = %q{sprinkle}
|
3
|
-
s.version = "0.1.
|
3
|
+
s.version = "0.1.6"
|
4
4
|
|
5
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-
|
6
|
+
s.authors = ["Marcus Crafter", "Mitchell Hashimoto"]
|
7
|
+
s.date = %q{2008-07-19}
|
8
8
|
s.default_executable = %q{sprinkle}
|
9
9
|
s.description = %q{Ruby DSL based software provisioning tool}
|
10
|
-
s.email = ["crafterm@redartisan.com"]
|
10
|
+
s.email = ["crafterm@redartisan.com", "mitchell.hashimoto@citrusbyte.com"]
|
11
11
|
s.executables = ["sprinkle"]
|
12
|
-
s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
|
13
|
-
s.files = ["CREDITS", "History.txt", "MIT-LICENSE", "Manifest.txt", "README.
|
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/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/process.rb", "lib/sprinkle/verifiers/ruby.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
14
|
s.has_rdoc = true
|
15
15
|
s.homepage = %q{http://sprinkle.rubyforge.org}
|
16
16
|
s.rdoc_options = ["--main", "README.txt"]
|
metadata
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: auser-sprinkle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcus Crafter
|
8
|
+
- Mitchell Hashimoto
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
12
|
|
12
|
-
date: 2008-07-
|
13
|
+
date: 2008-07-19 00:00:00 -07:00
|
13
14
|
default_executable: sprinkle
|
14
15
|
dependencies:
|
15
16
|
- !ruby/object:Gem::Dependency
|
@@ -51,6 +52,7 @@ dependencies:
|
|
51
52
|
description: Ruby DSL based software provisioning tool
|
52
53
|
email:
|
53
54
|
- crafterm@redartisan.com
|
55
|
+
- mitchell.hashimoto@citrusbyte.com
|
54
56
|
executables:
|
55
57
|
- sprinkle
|
56
58
|
extensions: []
|
@@ -58,17 +60,17 @@ extensions: []
|
|
58
60
|
extra_rdoc_files:
|
59
61
|
- History.txt
|
60
62
|
- Manifest.txt
|
63
|
+
- README.txt
|
61
64
|
files:
|
62
65
|
- CREDITS
|
63
66
|
- History.txt
|
64
67
|
- MIT-LICENSE
|
65
68
|
- Manifest.txt
|
66
|
-
- README.
|
69
|
+
- README.txt
|
67
70
|
- Rakefile
|
68
71
|
- bin/sprinkle
|
69
72
|
- config/hoe.rb
|
70
73
|
- config/requirements.rb
|
71
|
-
- examples/merb/deploy.rb
|
72
74
|
- examples/rails/README
|
73
75
|
- examples/rails/deploy.rb
|
74
76
|
- examples/rails/packages/database.rb
|
@@ -79,6 +81,7 @@ files:
|
|
79
81
|
- examples/rails/rails.rb
|
80
82
|
- examples/sprinkle/sprinkle.rb
|
81
83
|
- lib/sprinkle.rb
|
84
|
+
- lib/sprinkle/actors/actors.rb
|
82
85
|
- lib/sprinkle/actors/capistrano.rb
|
83
86
|
- lib/sprinkle/actors/vlad.rb
|
84
87
|
- lib/sprinkle/configurable.rb
|
@@ -101,6 +104,8 @@ files:
|
|
101
104
|
- lib/sprinkle/verifiers/directory.rb
|
102
105
|
- lib/sprinkle/verifiers/executable.rb
|
103
106
|
- lib/sprinkle/verifiers/file.rb
|
107
|
+
- lib/sprinkle/verifiers/process.rb
|
108
|
+
- lib/sprinkle/verifiers/ruby.rb
|
104
109
|
- lib/sprinkle/verifiers/symlink.rb
|
105
110
|
- lib/sprinkle/verify.rb
|
106
111
|
- lib/sprinkle/version.rb
|