rudy 0.6.8 → 0.7.0

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 (56) hide show
  1. data/CHANGES.txt +15 -2
  2. data/README.rdoc +30 -23
  3. data/Rakefile +5 -5
  4. data/Rudyfile +87 -66
  5. data/bin/rudy +120 -167
  6. data/bin/rudy-ec2 +17 -13
  7. data/bin/rudy-s3 +6 -4
  8. data/bin/rudy-sdb +5 -4
  9. data/lib/annoy.rb +1 -1
  10. data/lib/console.rb +1 -3
  11. data/lib/rudy.rb +11 -25
  12. data/lib/rudy/aws/ec2/instance.rb +1 -1
  13. data/lib/rudy/aws/ec2/volume.rb +2 -2
  14. data/lib/rudy/aws/sdb/error.rb +2 -1
  15. data/lib/rudy/cli.rb +10 -1
  16. data/lib/rudy/cli/aws/ec2/addresses.rb +1 -1
  17. data/lib/rudy/cli/aws/ec2/images.rb +3 -1
  18. data/lib/rudy/cli/aws/ec2/instances.rb +2 -2
  19. data/lib/rudy/cli/candy.rb +11 -0
  20. data/lib/rudy/cli/config.rb +25 -44
  21. data/lib/rudy/cli/machines.rb +30 -10
  22. data/lib/rudy/cli/routines.rb +67 -19
  23. data/lib/rudy/config.rb +30 -13
  24. data/lib/rudy/config/objects.rb +135 -10
  25. data/lib/rudy/disks.rb +8 -52
  26. data/lib/rudy/global.rb +9 -5
  27. data/lib/rudy/guidelines.rb +18 -0
  28. data/lib/rudy/huxtable.rb +29 -19
  29. data/lib/rudy/machines.rb +10 -7
  30. data/lib/rudy/mixins/hash.rb +25 -0
  31. data/lib/rudy/routines.rb +160 -10
  32. data/lib/rudy/routines/helper.rb +50 -0
  33. data/lib/rudy/routines/helpers/diskhelper.rb +44 -18
  34. data/lib/rudy/routines/helpers/scmhelper.rb +39 -0
  35. data/lib/rudy/routines/helpers/scripthelper.rb +86 -35
  36. data/lib/rudy/routines/helpers/userhelper.rb +37 -0
  37. data/lib/rudy/routines/passthrough.rb +36 -0
  38. data/lib/rudy/routines/release.rb +38 -22
  39. data/lib/rudy/routines/shutdown.rb +20 -49
  40. data/lib/rudy/routines/startup.rb +20 -47
  41. data/lib/rudy/scm.rb +75 -0
  42. data/lib/rudy/scm/git.rb +215 -0
  43. data/lib/rudy/scm/svn.rb +7 -6
  44. data/lib/rudy/utils.rb +12 -30
  45. data/lib/storable.rb +4 -1
  46. data/lib/sysinfo.rb +10 -0
  47. data/rudy.gemspec +21 -9
  48. data/test/01_mixins/10_hash_test.rb +25 -0
  49. data/test/{05_config → 10_config}/00_setup_test.rb +1 -1
  50. data/test/{05_config → 10_config}/30_machines_test.rb +1 -1
  51. data/test/15_scm/00_setup_test.rb +20 -0
  52. data/test/15_scm/20_git_test.rb +61 -0
  53. data/test/helper.rb +1 -1
  54. data/vendor/highline-1.5.1/Rakefile +3 -3
  55. metadata +41 -12
  56. data/bin/ird +0 -175
data/lib/rudy/scm/svn.rb CHANGED
@@ -12,7 +12,7 @@ module Rudy
12
12
 
13
13
  def create_release(username=nil, msg=nil)
14
14
  local_uri, local_revision = local_info
15
- rtag = generate_release_tag_name(username)
15
+ rtag = find_next_rtag(username)
16
16
  release_uri = "#{@base_uri}/#{rtag}"
17
17
  msg ||= 'Another Release by Rudy!'
18
18
  msg.tr!("'", "\\'")
@@ -24,12 +24,12 @@ module Rudy
24
24
  end
25
25
 
26
26
  def switch_working_copy(tag)
27
- raise "Invalid release tag (#{tag})." unless valid_uri?(tag)
27
+ raise "Invalid release tag (#{tag})." unless valid_rtag?(tag)
28
28
  `svn switch #{tag}`
29
29
  end
30
30
 
31
31
  # rel-2009-03-05-user-rev
32
- def generate_release_tag_name(username=nil)
32
+ def find_next_rtag(username=nil)
33
33
  now = Time.now
34
34
  mon = now.mon.to_s.rjust(2, '0')
35
35
  day = now.day.to_s.rjust(2, '0')
@@ -38,7 +38,7 @@ module Rudy
38
38
  criteria.insert(-2, username) if username
39
39
  tag = criteria.join(Rudy::DELIM)
40
40
  # Keep incrementing the revision number until we find the next one.
41
- tag.succ! while (valid_uri?("#{@base_uri}/#{tag}"))
41
+ tag.succ! while (valid_rtag?("#{@base_uri}/#{tag}"))
42
42
  tag
43
43
  end
44
44
 
@@ -55,12 +55,13 @@ module Rudy
55
55
  (File.exists?(File.join(path, '.svn')))
56
56
  end
57
57
 
58
- def valid_uri?(uri)
58
+ def valid_rtag?(uri)
59
59
  ret = `svn info #{uri} 2>&1` || '' # Valid SVN URIs will return some info
60
60
  (ret =~ /Repository UUID/) ? true : false
61
61
  end
62
62
 
63
- def everything_checked_in?
63
+ # Are all local changes committed?
64
+ def clean_working_copy?
64
65
  `svn diff . 2>&1` == '' # svn diff should return nothing
65
66
  end
66
67
  end
data/lib/rudy/utils.rb CHANGED
@@ -70,7 +70,7 @@ module Rudy
70
70
  # * +duration+ seconds to wait between tries (default: 2).
71
71
  # * +max+ maximum time to wait (default: 120). Throws an exception when exceeded.
72
72
  # * +logger+ IO object to print +dot+ to.
73
- # * +msg+ the message to print on success
73
+ # * +msg+ the message to print before executing the block.
74
74
  # * +bells+ number of terminal bells to ring. Set to nil or false to keep the waiter silent
75
75
  #
76
76
  # The +check+ block must return false while waiting. Once it returns true
@@ -82,6 +82,10 @@ module Rudy
82
82
  max = duration*2 if max < duration
83
83
  dot = '.'
84
84
  begin
85
+ if msg && logger
86
+ logger.print msg
87
+ logger.flush
88
+ end
85
89
  Timeout::timeout(max) do
86
90
  while !check.call
87
91
  sleep duration
@@ -93,7 +97,12 @@ module Rudy
93
97
  retry if Annoy.pose_question(" Keep waiting?\a ", /yes|y|ya|sure|you bet!/i, logger)
94
98
  return false
95
99
  end
96
- logger.puts msg if msg
100
+
101
+ if msg && logger
102
+ logger.puts " done"
103
+ logger.flush
104
+ end
105
+
97
106
  Rudy::Utils.bell(bells, logger)
98
107
  true
99
108
  end
@@ -274,35 +283,8 @@ module Rudy
274
283
 
275
284
  ######### Everything below here is TO BE REMOVED.
276
285
 
277
- #
278
- #
279
- # Run a shell command (TO BE REMOVED)
280
- def sh(command, chdir=false, verbose=false)
281
- prevdir = Dir.pwd
282
- Dir.chdir chdir if chdir
283
- puts command if verbose
284
- system(command)
285
- Dir.chdir prevdir if chdir
286
- end
287
-
288
- #
289
- # Run an SSH command (TO BE REMOVED)
290
- def ssh_command(host, keypair, user, command=false, printonly=false, verbose=false)
291
- #puts "CONNECTING TO #{host}..."
292
- cmd = "ssh -i #{keypair} #{user}@#{host} "
293
- cmd += " '#{command}'" if command
294
- puts cmd if verbose
295
- return cmd if printonly
296
- # backticks returns STDOUT
297
- # exec replaces current process (it's just like running ssh)
298
- # -- UPDATE -- Some problem with exec. "Operation not supported"
299
- # using system (http://www.mail-archive.com/mongrel-users@rubyforge.org/msg02018.html)
300
- (command) ? `#{cmd}` : Kernel.system(cmd)
301
- end
302
-
303
-
304
286
  # (TO BE REMOVED)
305
- # TODO: This is old and insecure.
287
+ # TODO: This is old and nasty.
306
288
  def scp_command(host, keypair, user, paths, to_path, to_local=false, verbose=false, printonly=false)
307
289
 
308
290
  paths = [paths] unless paths.is_a?(Array)
data/lib/storable.rb CHANGED
@@ -16,7 +16,7 @@ class Storable
16
16
  unless defined?(SUPPORTED_FORMATS) # We can assume all are defined
17
17
  VERSION = 5
18
18
  NICE_TIME_FORMAT = "%Y-%m-%d@%H:%M:%S".freeze
19
- SUPPORTED_FORMATS = %w{tsv csv yaml json s string}.freeze
19
+ SUPPORTED_FORMATS = [:tsv, :csv, :yaml, :json, :s, :string].freeze
20
20
  end
21
21
 
22
22
  # This value will be used as a default unless provided on-the-fly.
@@ -25,6 +25,7 @@ class Storable
25
25
 
26
26
  # See SUPPORTED_FORMATS for available values
27
27
  def format=(v)
28
+ v &&= v.to_sym
28
29
  raise "Unsupported format: #{v}" unless SUPPORTED_FORMATS.member?(v)
29
30
  @format = v
30
31
  end
@@ -84,6 +85,7 @@ class Storable
84
85
 
85
86
  # Dump the object data to the given format.
86
87
  def dump(format=nil, with_titles=false)
88
+ format &&= format.to_sym
87
89
  format ||= 's' # as in, to_s
88
90
  raise "Format not defined (#{format})" unless SUPPORTED_FORMATS.member?(format)
89
91
  send("to_#{format}", with_titles)
@@ -106,6 +108,7 @@ class Storable
106
108
  def to_file(file_path=nil, with_titles=true)
107
109
  raise "Cannot store to nil path" if file_path.nil?
108
110
  format = File.extname(file_path).tr('.', '')
111
+ format &&= format.to_sym
109
112
  format ||= @format
110
113
  Storable.write_file(file_path, dump(format, with_titles))
111
114
  end
data/lib/sysinfo.rb CHANGED
@@ -265,6 +265,16 @@ class SystemInfo < Storable
265
265
  end
266
266
  end
267
267
 
268
+ def shell
269
+ if @os == :unix
270
+ (ENV['SHELL'] || 'bash').to_sym
271
+ elsif @os == :win32
272
+ :dos
273
+ else
274
+ raise "paths not implemented for: #{@os}"
275
+ end
276
+ end
277
+
268
278
  # Print friendly system information.
269
279
  def to_s
270
280
  sprintf("Hostname: %s#{$/}IP Address: %s#{$/}System: %s#{$/}Uptime: %.2f (hours)#{$/}Ruby: #{ruby.join('.')}",
data/rudy.gemspec CHANGED
@@ -1,8 +1,8 @@
1
1
  @spec = Gem::Specification.new do |s|
2
2
  s.name = "rudy"
3
3
  s.rubyforge_project = 'rudy'
4
- s.version = "0.6.8"
5
- s.summary = "Rudy: Not your grandparent's deployment tool."
4
+ s.version = "0.7.0"
5
+ s.summary = "Rudy: Not your grandparents' EC2 deployment tool."
6
6
  s.description = s.summary
7
7
  s.author = "Delano Mandelbaum"
8
8
  s.email = "delano@solutious.com"
@@ -14,11 +14,13 @@
14
14
  s.require_paths = %w[lib]
15
15
  s.rubygems_version = '1.1.1'
16
16
 
17
- s.add_dependency 'drydock', '>= 0.5.6'
18
- s.add_dependency 'caesars', '>= 0.5.4'
19
- s.add_dependency 'rye', '>= 0.5.4'
17
+ s.add_dependency 'drydock', '>= 0.6.0'
18
+ s.add_dependency 'caesars', '>= 0.6.1'
19
+ s.add_dependency 'rye', '>= 0.6.3'
20
20
 
21
+ s.add_dependency 'grit'
21
22
  s.add_dependency 'echoe'
23
+ s.add_dependency 'json'
22
24
  s.add_dependency 'amazon-ec2', '>= 0.3.8' # Region fix
23
25
  s.add_dependency 'aws-s3', '>= 0.6.1' # Ruby 1.9.1 compatability
24
26
  s.add_dependency 'net-ssh', '>= 2.0.9'
@@ -32,7 +34,7 @@
32
34
  #s.add_development_dependency('jgre-monkeyspecdoc', '>= 0.1.0')
33
35
  #s.add_development_dependency('thoughtbot-shoulda', '>= 0.1.0')
34
36
 
35
- s.executables = %w[ird rudy rudy-ec2 rudy-sdb rudy-s3]
37
+ s.executables = %w[rudy rudy-ec2 rudy-sdb rudy-s3]
36
38
 
37
39
  # = MANIFEST =
38
40
  # git ls-files
@@ -42,7 +44,6 @@
42
44
  README.rdoc
43
45
  Rakefile
44
46
  Rudyfile
45
- bin/ird
46
47
  bin/rudy
47
48
  bin/rudy-ec2
48
49
  bin/rudy-s3
@@ -87,15 +88,23 @@
87
88
  lib/rudy/config/objects.rb
88
89
  lib/rudy/disks.rb
89
90
  lib/rudy/global.rb
91
+ lib/rudy/guidelines.rb
90
92
  lib/rudy/huxtable.rb
91
93
  lib/rudy/machines.rb
92
94
  lib/rudy/metadata.rb
95
+ lib/rudy/mixins/hash.rb
93
96
  lib/rudy/routines.rb
97
+ lib/rudy/routines/helper.rb
94
98
  lib/rudy/routines/helpers/diskhelper.rb
99
+ lib/rudy/routines/helpers/scmhelper.rb
95
100
  lib/rudy/routines/helpers/scripthelper.rb
101
+ lib/rudy/routines/helpers/userhelper.rb
102
+ lib/rudy/routines/passthrough.rb
96
103
  lib/rudy/routines/release.rb
97
104
  lib/rudy/routines/shutdown.rb
98
105
  lib/rudy/routines/startup.rb
106
+ lib/rudy/scm.rb
107
+ lib/rudy/scm/git.rb
99
108
  lib/rudy/scm/svn.rb
100
109
  lib/rudy/utils.rb
101
110
  lib/storable.rb
@@ -106,8 +115,11 @@
106
115
  support/randomize-root-password
107
116
  support/rudy-ec2-startup
108
117
  support/update-ec2-ami-tools
109
- test/05_config/00_setup_test.rb
110
- test/05_config/30_machines_test.rb
118
+ test/01_mixins/10_hash_test.rb
119
+ test/10_config/00_setup_test.rb
120
+ test/10_config/30_machines_test.rb
121
+ test/15_scm/00_setup_test.rb
122
+ test/15_scm/20_git_test.rb
111
123
  test/20_sdb/00_setup_test.rb
112
124
  test/20_sdb/10_domains_test.rb
113
125
  test/25_ec2/00_setup_test.rb
@@ -0,0 +1,25 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'helper')
2
+
3
+ module Rudy::Test
4
+
5
+ class Case_01_Mixins < Test::Unit::TestCase
6
+
7
+ def one_level; {:empty=>1}; end
8
+ def two_levels; {:l1 => {:empty=>1}}; end
9
+ def three_levels; { :l1 => { :l2 => {:empty=>1, :empty=>1} } }; end
10
+ def six_levels; {:l1 => {:l2 => {:l3 => {:l4 => {:l5 => {}, :empty=>1}, :empty=>1}}}}; end
11
+
12
+ context "#{name}_10 Hash" do
13
+
14
+ should "(10) should calculate deepest point" do
15
+ assert_equal one_level.deepest_point, 1
16
+ assert_equal two_levels.deepest_point, 2
17
+ assert_equal three_levels.deepest_point, 3
18
+ assert_equal six_levels.deepest_point, 6
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), '..', 'helper')
2
2
 
3
3
  module Rudy::Test
4
4
 
5
- class Case_05_Config < Test::Unit::TestCase
5
+ class Case_10_Config < Test::Unit::TestCase
6
6
  include Rudy::Huxtable
7
7
 
8
8
  @@logger = STDERR #StringIO.new
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Rudy::Test
3
- class Case_05_Config
3
+ class Case_10_Config
4
4
 
5
5
  context "#{name}_30 Machines" do
6
6
 
@@ -0,0 +1,20 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'helper')
2
+
3
+ module Rudy::Test
4
+
5
+ class Case_15_SCM < Test::Unit::TestCase
6
+ include Rudy::Huxtable
7
+
8
+ @@logger = STDERR #StringIO.new
9
+ @@zone = @@global.zone.to_s
10
+
11
+ context "#{name}_00 Setup" do
12
+ should "(00) have class variables setup" do
13
+ stop_test !@@global.is_a?(Rudy::Global), "We don't have global (#{@@global})"
14
+ stop_test !@@config.is_a?(Rudy::Config), "We don't have an instance of Rudy::Config (#{@@config})"
15
+ end
16
+ end
17
+
18
+
19
+ end
20
+ end
@@ -0,0 +1,61 @@
1
+
2
+ module Rudy::Test
3
+ class Case_15_SCM
4
+
5
+ def generate_rtag(username=nil)
6
+ now = Time.now
7
+ mon = now.mon.to_s.rjust(2, '0')
8
+ day = now.day.to_s.rjust(2, '0')
9
+ rev = "01"
10
+ criteria = ['rel', now.year, mon, day, rev]
11
+ criteria.insert(-2, username) if username
12
+ criteria.join(Rudy::DELIM)
13
+ end
14
+
15
+ context "#{name}_20 Git" do
16
+ setup do
17
+ @strand = Rudy::Utils.strand
18
+ @scm = Rudy::SCM::GIT.new({
19
+ :path => "/tmp/git-#{@strand}"
20
+ })
21
+ stop_test !Rudy::SCM::GIT.working_copy?, "Not in working directory"
22
+ end
23
+
24
+
25
+ should "(10) know when a tag is invalid" do
26
+ bad_tag = generate_rtag(@strand)
27
+ assert !@scm.valid_rtag?(bad_tag), "Said bad tag was valid"
28
+ end
29
+
30
+ should "(20) generate release tag name" do
31
+ rtag_should = generate_rtag(@strand)
32
+ rtag = @scm.find_next_rtag(@strand)
33
+ assert_equal rtag_should, rtag, "Bad tag"
34
+ end
35
+
36
+ should "(30) create release" do
37
+ rtag_should = generate_rtag(@strand)
38
+ rtag = @scm.create_release(@strand)
39
+ assert_equal rtag_should, rtag, "Bad tag"
40
+ assert @scm.delete_rtag(rtag), "Could not delete tag"
41
+ end
42
+
43
+ should "(31) know when a tag is valid" do
44
+ rtag = @scm.create_release(@strand)
45
+ assert @scm.valid_rtag?(rtag), "Said bad tag was invalid"
46
+ assert @scm.delete_rtag(rtag), "Could not delete tag"
47
+ end
48
+
49
+ should "(40) get remote URI" do
50
+ rtag = @scm.get_remote_uri
51
+ assert !@scm.get_remote_uri.nil? && !@scm.get_remote_uri.empty?, "No remote URI"
52
+ end
53
+
54
+ xshould "(90) raises exception when deleting a nonexistent tag" do
55
+
56
+ end
57
+ end
58
+
59
+
60
+ end
61
+ end
data/test/helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
 
2
2
  libdir = File.join(File.dirname(__FILE__), '..', 'lib')
3
3
  $:.unshift libdir
4
- %w{amazon-ec2 drydock caesars rye}.each { |dir| $: << File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
4
+ %w{amazon-ec2 drydock caesars rye}.each { |dir| $:.unshift File.join(File.dirname(__FILE__), '..', '..', dir, 'lib') }
5
5
 
6
6
  require 'rubygems'
7
7
  require 'test/unit'
@@ -26,7 +26,7 @@ Rake::RDocTask.new do |rdoc|
26
26
  rdoc.title = "HighLine Documentation"
27
27
  end
28
28
 
29
- desc "Upload current documentation to Rubyforge"
29
+ about "Upload current documentation to Rubyforge"
30
30
  task :upload_docs => [:rdoc] do
31
31
  sh "scp -r doc/html/* " +
32
32
  "bbazzarrakk@rubyforge.org:/var/www/gforge-projects/highline/doc/"
@@ -68,7 +68,7 @@ Rake::GemPackageTask.new(spec) do |pkg|
68
68
  pkg.need_tar = true
69
69
  end
70
70
 
71
- desc "Show library's code statistics"
71
+ about "Show library's code statistics"
72
72
  task :stats do
73
73
  require 'code_statistics'
74
74
  CodeStatistics.new( ["HighLine", "lib"],
@@ -76,7 +76,7 @@ task :stats do
76
76
  ["Units", "test"] ).to_s
77
77
  end
78
78
 
79
- desc "Add new files to Subversion"
79
+ about "Add new files to Subversion"
80
80
  task :add_to_svn do
81
81
  sh %Q{svn status | ruby -nae 'system "svn add \#{$F[1]}" if $F[0] == "?"' }
82
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rudy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delano Mandelbaum
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-24 00:00:00 -04:00
12
+ date: 2009-05-02 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.5.6
23
+ version: 0.6.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: caesars
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.4
33
+ version: 0.6.1
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rye
@@ -40,7 +40,17 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: 0.5.4
43
+ version: 0.6.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: grit
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
44
54
  version:
45
55
  - !ruby/object:Gem::Dependency
46
56
  name: echoe
@@ -52,6 +62,16 @@ dependencies:
52
62
  - !ruby/object:Gem::Version
53
63
  version: "0"
54
64
  version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: json
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: amazon-ec2
57
77
  type: :runtime
@@ -112,10 +132,9 @@ dependencies:
112
132
  - !ruby/object:Gem::Version
113
133
  version: "0"
114
134
  version:
115
- description: "Rudy: Not your grandparent's deployment tool."
135
+ description: "Rudy: Not your grandparents' EC2 deployment tool."
116
136
  email: delano@solutious.com
117
137
  executables:
118
- - ird
119
138
  - rudy
120
139
  - rudy-ec2
121
140
  - rudy-sdb
@@ -133,7 +152,6 @@ files:
133
152
  - README.rdoc
134
153
  - Rakefile
135
154
  - Rudyfile
136
- - bin/ird
137
155
  - bin/rudy
138
156
  - bin/rudy-ec2
139
157
  - bin/rudy-s3
@@ -178,15 +196,23 @@ files:
178
196
  - lib/rudy/config/objects.rb
179
197
  - lib/rudy/disks.rb
180
198
  - lib/rudy/global.rb
199
+ - lib/rudy/guidelines.rb
181
200
  - lib/rudy/huxtable.rb
182
201
  - lib/rudy/machines.rb
183
202
  - lib/rudy/metadata.rb
203
+ - lib/rudy/mixins/hash.rb
184
204
  - lib/rudy/routines.rb
205
+ - lib/rudy/routines/helper.rb
185
206
  - lib/rudy/routines/helpers/diskhelper.rb
207
+ - lib/rudy/routines/helpers/scmhelper.rb
186
208
  - lib/rudy/routines/helpers/scripthelper.rb
209
+ - lib/rudy/routines/helpers/userhelper.rb
210
+ - lib/rudy/routines/passthrough.rb
187
211
  - lib/rudy/routines/release.rb
188
212
  - lib/rudy/routines/shutdown.rb
189
213
  - lib/rudy/routines/startup.rb
214
+ - lib/rudy/scm.rb
215
+ - lib/rudy/scm/git.rb
190
216
  - lib/rudy/scm/svn.rb
191
217
  - lib/rudy/utils.rb
192
218
  - lib/storable.rb
@@ -197,8 +223,11 @@ files:
197
223
  - support/randomize-root-password
198
224
  - support/rudy-ec2-startup
199
225
  - support/update-ec2-ami-tools
200
- - test/05_config/00_setup_test.rb
201
- - test/05_config/30_machines_test.rb
226
+ - test/01_mixins/10_hash_test.rb
227
+ - test/10_config/00_setup_test.rb
228
+ - test/10_config/30_machines_test.rb
229
+ - test/15_scm/00_setup_test.rb
230
+ - test/15_scm/20_git_test.rb
202
231
  - test/20_sdb/00_setup_test.rb
203
232
  - test/20_sdb/10_domains_test.rb
204
233
  - test/25_ec2/00_setup_test.rb
@@ -253,7 +282,7 @@ post_install_message:
253
282
  rdoc_options:
254
283
  - --line-numbers
255
284
  - --title
256
- - "Rudy: Not your grandparent's deployment tool."
285
+ - "Rudy: Not your grandparents' EC2 deployment tool."
257
286
  - --main
258
287
  - README.rdoc
259
288
  require_paths:
@@ -276,6 +305,6 @@ rubyforge_project: rudy
276
305
  rubygems_version: 1.3.2
277
306
  signing_key:
278
307
  specification_version: 3
279
- summary: "Rudy: Not your grandparent's deployment tool."
308
+ summary: "Rudy: Not your grandparents' EC2 deployment tool."
280
309
  test_files: []
281
310