mitchellh-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 +2 -1
- 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 +5 -5
- metadata +6 -3
- data/examples/merb/deploy.rb +0 -5
data/Manifest.txt
CHANGED
@@ -7,7 +7,6 @@ Rakefile
|
|
7
7
|
bin/sprinkle
|
8
8
|
config/hoe.rb
|
9
9
|
config/requirements.rb
|
10
|
-
examples/merb/deploy.rb
|
11
10
|
examples/rails/README
|
12
11
|
examples/rails/deploy.rb
|
13
12
|
examples/rails/packages/database.rb
|
@@ -41,6 +40,8 @@ lib/sprinkle/script.rb
|
|
41
40
|
lib/sprinkle/verifiers/directory.rb
|
42
41
|
lib/sprinkle/verifiers/executable.rb
|
43
42
|
lib/sprinkle/verifiers/file.rb
|
43
|
+
lib/sprinkle/verifiers/process.rb
|
44
|
+
lib/sprinkle/verifiers/ruby.rb
|
44
45
|
lib/sprinkle/verifiers/symlink.rb
|
45
46
|
lib/sprinkle/verify.rb
|
46
47
|
lib/sprinkle/version.rb
|
data/lib/sprinkle/package.rb
CHANGED
@@ -1,4 +1,96 @@
|
|
1
1
|
module Sprinkle
|
2
|
+
# = Packages
|
3
|
+
#
|
4
|
+
# A package defines one or more things to provision onto the server.
|
5
|
+
# There is a lot of flexibility in a way a package is defined but
|
6
|
+
# let me give you a basic example:
|
7
|
+
#
|
8
|
+
# package :ruby do
|
9
|
+
# description 'Ruby MRI'
|
10
|
+
# version '1.8.6'
|
11
|
+
# apt 'ruby'
|
12
|
+
#
|
13
|
+
# verify { has_executable 'ruby' }
|
14
|
+
# end
|
15
|
+
#
|
16
|
+
# The above would define a package named 'ruby' and give it a description
|
17
|
+
# and explicitly say its version. It is installed via apt and to verify
|
18
|
+
# the installation was successful sprinkle will check for the executable
|
19
|
+
# 'ruby' being availble. Pretty simple, right?
|
20
|
+
#
|
21
|
+
# <b>Note:</b> Defining a package does not INSTALL it. To install a
|
22
|
+
# package, you must require it in a Sprinkle::Policy block.
|
23
|
+
#
|
24
|
+
# == Pre-Requirements
|
25
|
+
#
|
26
|
+
# Most packages have some sort of pre-requisites in order to be installed.
|
27
|
+
# Sprinkle allows you to define the requirements of the package, which
|
28
|
+
# will be installed before the package itself. An example below:
|
29
|
+
#
|
30
|
+
# package :rubygems do
|
31
|
+
# source 'http://rubyforge.org/rubygems.tgz'
|
32
|
+
# requires :ruby
|
33
|
+
# end
|
34
|
+
#
|
35
|
+
# In this case, when rubygems is being installed, Sprinkle will first
|
36
|
+
# provision the server with Ruby to make sure the requirements are met.
|
37
|
+
# In turn, if ruby has requirements, it installs those first, and so on.
|
38
|
+
#
|
39
|
+
# == Verifications
|
40
|
+
#
|
41
|
+
# Most of the time its important to know whether the software you're
|
42
|
+
# attempting to install was installed successfully or not. For this,
|
43
|
+
# Sprinkle provides verifications. Verifications are one or more blocks
|
44
|
+
# which define rules with which Sprinkle can check if it installed
|
45
|
+
# the package successfully. If these verification blocks fail, then
|
46
|
+
# Sprinkle will gracefully stop the entire process. An example below:
|
47
|
+
#
|
48
|
+
# package :rubygems do
|
49
|
+
# source 'http://rubyforge.org/rubygems.tgz'
|
50
|
+
# requires :ruby
|
51
|
+
#
|
52
|
+
# verify { has_executable 'gem' }
|
53
|
+
# end
|
54
|
+
#
|
55
|
+
# In addition to verifying an installation was successfully, by default
|
56
|
+
# Sprinkle runs these verifications <em>before</em> the installation to
|
57
|
+
# check if the package is already installed. If the verifications pass
|
58
|
+
# before installing the package, it skips the package. To override this
|
59
|
+
# behavior, set the -f flag on the sprinkle script or set the
|
60
|
+
# :force option to true in Sprinkle::OPTIONS
|
61
|
+
#
|
62
|
+
# For more information on verifications and to see all the available
|
63
|
+
# verifications, see Sprinkle::Verify
|
64
|
+
#
|
65
|
+
# == Virtual Packages
|
66
|
+
#
|
67
|
+
# Sometimes, there are multiple packages available for a single task. An
|
68
|
+
# example is a database package. It can contain mySQL, postgres, or sqlite!
|
69
|
+
# This is where virtual packages come in handy. They are defined as follows:
|
70
|
+
#
|
71
|
+
# package :sqlite3, :provides => :database do
|
72
|
+
# apt 'sqlite3'
|
73
|
+
# end
|
74
|
+
#
|
75
|
+
# The :provides option allows you to reference this package either by :sqlite3
|
76
|
+
# or by :database. But whereas the package name is unique, multiple packages may
|
77
|
+
# share the same provision. If this is the case, when running Sprinkle, the
|
78
|
+
# script will ask you which provision you want to install. At this time, you
|
79
|
+
# can only install one.
|
80
|
+
#
|
81
|
+
# == Meta-Packages
|
82
|
+
#
|
83
|
+
# A package doesn't require an installer. If you want to define a package which
|
84
|
+
# merely encompasses other packages, that is fine too. Example:
|
85
|
+
#
|
86
|
+
# package :meta do
|
87
|
+
# requires :magic_beans
|
88
|
+
# requires :magic_sauce
|
89
|
+
# end
|
90
|
+
#
|
91
|
+
#--
|
92
|
+
# FIXME: Should probably document recommendations.
|
93
|
+
#++
|
2
94
|
module Package
|
3
95
|
PACKAGES = {}
|
4
96
|
|
@@ -13,7 +105,7 @@ module Sprinkle
|
|
13
105
|
package
|
14
106
|
end
|
15
107
|
|
16
|
-
class Package
|
108
|
+
class Package #:nodoc:
|
17
109
|
include ArbitraryOptions
|
18
110
|
attr_accessor :name, :provides, :installer, :dependencies, :recommends, :verifications
|
19
111
|
|
data/lib/sprinkle/policy.rb
CHANGED
@@ -1,16 +1,56 @@
|
|
1
1
|
require 'highline/import'
|
2
2
|
|
3
3
|
module Sprinkle
|
4
|
+
# = Policies
|
5
|
+
#
|
6
|
+
# A policy defines a set of packages which are required for a certain
|
7
|
+
# role (app, database, etc.). All policies defined will be run and all
|
8
|
+
# packages required by the policy will be installed. So whereas defining
|
9
|
+
# a Sprinkle::Package merely defines it, defining a Sprinkle::Policy
|
10
|
+
# actually causes those packages to install.
|
11
|
+
#
|
12
|
+
# == A Basic Example
|
13
|
+
#
|
14
|
+
# policy :blog, :roles => :app do
|
15
|
+
# require :webserver
|
16
|
+
# require :database
|
17
|
+
# require :rails
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# This says that for the blog on the app role, it requires certain
|
21
|
+
# packages. The :roles option is <em>exactly</em> the same as a capistrano
|
22
|
+
# or vlad role. A role merely defines what server the commands are run
|
23
|
+
# on. This way, a single Sprinkle script can provision an entire group
|
24
|
+
# of servers.
|
25
|
+
#
|
26
|
+
# To define a role, put in your actor specific configuration file (recipe or
|
27
|
+
# script file):
|
28
|
+
#
|
29
|
+
# role :app, "208.28.38.44"
|
30
|
+
#
|
31
|
+
# The capistrano and vlad syntax is the same for that. If you're using a
|
32
|
+
# custom actor, you may have to do it differently.
|
33
|
+
#
|
34
|
+
# == Multiple Policies
|
35
|
+
#
|
36
|
+
# You may specify as many policies as you'd like. If the packages you're
|
37
|
+
# requiring are properly defined with verification blocks, then
|
38
|
+
# no software will be installed twice, so you may require a webserver on
|
39
|
+
# multiple packages within the same role without having to wait for
|
40
|
+
# that package to install repeatedly.
|
4
41
|
module Policy
|
5
|
-
POLICIES = []
|
42
|
+
POLICIES = [] #:nodoc:
|
6
43
|
|
44
|
+
# Defines a single policy. Currently the only option, which is also
|
45
|
+
# required, is :roles, which defines which servers a policy is
|
46
|
+
# used on.
|
7
47
|
def policy(name, options = {}, &block)
|
8
48
|
p = Policy.new(name, options, &block)
|
9
49
|
POLICIES << p
|
10
50
|
p
|
11
51
|
end
|
12
52
|
|
13
|
-
class Policy
|
53
|
+
class Policy #:nodoc:
|
14
54
|
attr_reader :name, :packages
|
15
55
|
|
16
56
|
def initialize(name, metadata = {}, &block)
|
data/lib/sprinkle/script.rb
CHANGED
@@ -1,12 +1,22 @@
|
|
1
1
|
module Sprinkle
|
2
|
+
# = Programmatically Run Sprinkle
|
3
|
+
#
|
4
|
+
# Sprinkle::Script gives you a way to programatically run a given
|
5
|
+
# sprinkle script.
|
2
6
|
class Script
|
7
|
+
# Run a given sprinkle script. This method is <b>blocking</b> so
|
8
|
+
# it will not return until the sprinkling is complete or fails.
|
9
|
+
#--
|
10
|
+
# FIXME: Improve documentation, possibly notify user how to tell
|
11
|
+
# if a sprinkling failed.
|
12
|
+
#++
|
3
13
|
def self.sprinkle(script, filename = '__SCRIPT__')
|
4
14
|
powder = new
|
5
15
|
powder.instance_eval script, filename
|
6
16
|
powder.sprinkle
|
7
17
|
end
|
8
18
|
|
9
|
-
def sprinkle
|
19
|
+
def sprinkle #:nodoc:
|
10
20
|
@deployment.process if @deployment
|
11
21
|
end
|
12
22
|
end
|
@@ -1,8 +1,13 @@
|
|
1
1
|
module Sprinkle
|
2
2
|
module Verifiers
|
3
|
+
# = Directory Verifier
|
4
|
+
#
|
5
|
+
# Defines a verify which can be used to test the existence of a
|
6
|
+
# directory.
|
3
7
|
module Directory
|
4
8
|
Sprinkle::Verify.register(Sprinkle::Verifiers::Directory)
|
5
9
|
|
10
|
+
# Tests that the directory <tt>dir</tt> exists.
|
6
11
|
def has_directory(dir)
|
7
12
|
@commands << "test -d #{dir}"
|
8
13
|
end
|
@@ -1,15 +1,34 @@
|
|
1
1
|
module Sprinkle
|
2
2
|
module Verifiers
|
3
|
+
# = Executable Verifier
|
4
|
+
#
|
5
|
+
# Contains a verifier to check the existance of an executable
|
6
|
+
# script on your server.
|
7
|
+
#
|
8
|
+
# == Example Usage
|
9
|
+
#
|
10
|
+
# First, absolute path to an executable:
|
11
|
+
#
|
12
|
+
# verify { has_executable '/usr/special/secret/bin/scipt' }
|
13
|
+
#
|
14
|
+
# Second, a global executable which would be available anywhere on the
|
15
|
+
# command line:
|
16
|
+
#
|
17
|
+
# verify { has_executable 'grep' }
|
3
18
|
module Executable
|
4
19
|
Sprinkle::Verify.register(Sprinkle::Verifiers::Executable)
|
5
20
|
|
21
|
+
# Checks if <tt>path</tt> is an executable script. This verifier is "smart" because
|
22
|
+
# if the path contains a forward slash '/' then it assumes you're checking an
|
23
|
+
# absolute path to an executable. If no '/' is in the path, it assumes you're
|
24
|
+
# checking for a global executable that would be available anywhere on the command line.
|
6
25
|
def has_executable(path)
|
7
26
|
# Be smart: If the path includes a forward slash, we're checking
|
8
27
|
# an absolute path. Otherwise, we're checking a global executable
|
9
28
|
if path.include?('/')
|
10
29
|
@commands << "test -x #{path}"
|
11
30
|
else
|
12
|
-
@commands << "[ -n \"`which #{path}
|
31
|
+
@commands << "[ -n \"`echo \\`which #{path}\\``\" ]"
|
13
32
|
end
|
14
33
|
end
|
15
34
|
end
|
@@ -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
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/
|
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: mitchellh-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: []
|
@@ -69,7 +71,6 @@ files:
|
|
69
71
|
- bin/sprinkle
|
70
72
|
- config/hoe.rb
|
71
73
|
- config/requirements.rb
|
72
|
-
- examples/merb/deploy.rb
|
73
74
|
- examples/rails/README
|
74
75
|
- examples/rails/deploy.rb
|
75
76
|
- examples/rails/packages/database.rb
|
@@ -103,6 +104,8 @@ files:
|
|
103
104
|
- lib/sprinkle/verifiers/directory.rb
|
104
105
|
- lib/sprinkle/verifiers/executable.rb
|
105
106
|
- lib/sprinkle/verifiers/file.rb
|
107
|
+
- lib/sprinkle/verifiers/process.rb
|
108
|
+
- lib/sprinkle/verifiers/ruby.rb
|
106
109
|
- lib/sprinkle/verifiers/symlink.rb
|
107
110
|
- lib/sprinkle/verify.rb
|
108
111
|
- lib/sprinkle/version.rb
|