dan-capistrano 2.5.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.
Files changed (107) hide show
  1. data/CHANGELOG.rdoc +770 -0
  2. data/Manifest +104 -0
  3. data/README.rdoc +66 -0
  4. data/Rakefile +35 -0
  5. data/bin/cap +4 -0
  6. data/bin/capify +78 -0
  7. data/capistrano.gemspec +48 -0
  8. data/examples/sample.rb +14 -0
  9. data/lib/capistrano.rb +2 -0
  10. data/lib/capistrano/callback.rb +45 -0
  11. data/lib/capistrano/cli.rb +47 -0
  12. data/lib/capistrano/cli/execute.rb +84 -0
  13. data/lib/capistrano/cli/help.rb +125 -0
  14. data/lib/capistrano/cli/help.txt +75 -0
  15. data/lib/capistrano/cli/options.rb +224 -0
  16. data/lib/capistrano/cli/ui.rb +40 -0
  17. data/lib/capistrano/command.rb +283 -0
  18. data/lib/capistrano/configuration.rb +43 -0
  19. data/lib/capistrano/configuration/actions/file_transfer.rb +47 -0
  20. data/lib/capistrano/configuration/actions/inspect.rb +46 -0
  21. data/lib/capistrano/configuration/actions/invocation.rb +293 -0
  22. data/lib/capistrano/configuration/callbacks.rb +148 -0
  23. data/lib/capistrano/configuration/connections.rb +204 -0
  24. data/lib/capistrano/configuration/execution.rb +143 -0
  25. data/lib/capistrano/configuration/loading.rb +197 -0
  26. data/lib/capistrano/configuration/namespaces.rb +197 -0
  27. data/lib/capistrano/configuration/roles.rb +73 -0
  28. data/lib/capistrano/configuration/servers.rb +85 -0
  29. data/lib/capistrano/configuration/variables.rb +127 -0
  30. data/lib/capistrano/errors.rb +15 -0
  31. data/lib/capistrano/extensions.rb +57 -0
  32. data/lib/capistrano/logger.rb +59 -0
  33. data/lib/capistrano/processable.rb +53 -0
  34. data/lib/capistrano/recipes/compat.rb +32 -0
  35. data/lib/capistrano/recipes/deploy.rb +562 -0
  36. data/lib/capistrano/recipes/deploy/dependencies.rb +44 -0
  37. data/lib/capistrano/recipes/deploy/local_dependency.rb +54 -0
  38. data/lib/capistrano/recipes/deploy/remote_dependency.rb +105 -0
  39. data/lib/capistrano/recipes/deploy/scm.rb +19 -0
  40. data/lib/capistrano/recipes/deploy/scm/accurev.rb +169 -0
  41. data/lib/capistrano/recipes/deploy/scm/base.rb +196 -0
  42. data/lib/capistrano/recipes/deploy/scm/bzr.rb +83 -0
  43. data/lib/capistrano/recipes/deploy/scm/cvs.rb +152 -0
  44. data/lib/capistrano/recipes/deploy/scm/darcs.rb +85 -0
  45. data/lib/capistrano/recipes/deploy/scm/git.rb +278 -0
  46. data/lib/capistrano/recipes/deploy/scm/mercurial.rb +137 -0
  47. data/lib/capistrano/recipes/deploy/scm/none.rb +44 -0
  48. data/lib/capistrano/recipes/deploy/scm/perforce.rb +138 -0
  49. data/lib/capistrano/recipes/deploy/scm/subversion.rb +121 -0
  50. data/lib/capistrano/recipes/deploy/strategy.rb +19 -0
  51. data/lib/capistrano/recipes/deploy/strategy/base.rb +79 -0
  52. data/lib/capistrano/recipes/deploy/strategy/checkout.rb +20 -0
  53. data/lib/capistrano/recipes/deploy/strategy/copy.rb +210 -0
  54. data/lib/capistrano/recipes/deploy/strategy/export.rb +20 -0
  55. data/lib/capistrano/recipes/deploy/strategy/remote.rb +52 -0
  56. data/lib/capistrano/recipes/deploy/strategy/remote_cache.rb +56 -0
  57. data/lib/capistrano/recipes/deploy/templates/maintenance.rhtml +53 -0
  58. data/lib/capistrano/recipes/standard.rb +37 -0
  59. data/lib/capistrano/recipes/templates/maintenance.rhtml +53 -0
  60. data/lib/capistrano/recipes/upgrade.rb +33 -0
  61. data/lib/capistrano/role.rb +102 -0
  62. data/lib/capistrano/server_definition.rb +56 -0
  63. data/lib/capistrano/shell.rb +260 -0
  64. data/lib/capistrano/ssh.rb +99 -0
  65. data/lib/capistrano/task_definition.rb +70 -0
  66. data/lib/capistrano/transfer.rb +216 -0
  67. data/lib/capistrano/version.rb +18 -0
  68. data/setup.rb +1346 -0
  69. data/test/cli/execute_test.rb +132 -0
  70. data/test/cli/help_test.rb +165 -0
  71. data/test/cli/options_test.rb +317 -0
  72. data/test/cli/ui_test.rb +28 -0
  73. data/test/cli_test.rb +17 -0
  74. data/test/command_test.rb +286 -0
  75. data/test/configuration/actions/file_transfer_test.rb +61 -0
  76. data/test/configuration/actions/inspect_test.rb +65 -0
  77. data/test/configuration/actions/invocation_test.rb +224 -0
  78. data/test/configuration/callbacks_test.rb +220 -0
  79. data/test/configuration/connections_test.rb +349 -0
  80. data/test/configuration/execution_test.rb +175 -0
  81. data/test/configuration/loading_test.rb +132 -0
  82. data/test/configuration/namespace_dsl_test.rb +311 -0
  83. data/test/configuration/roles_test.rb +144 -0
  84. data/test/configuration/servers_test.rb +121 -0
  85. data/test/configuration/variables_test.rb +184 -0
  86. data/test/configuration_test.rb +88 -0
  87. data/test/deploy/local_dependency_test.rb +76 -0
  88. data/test/deploy/remote_dependency_test.rb +114 -0
  89. data/test/deploy/scm/accurev_test.rb +23 -0
  90. data/test/deploy/scm/base_test.rb +55 -0
  91. data/test/deploy/scm/git_test.rb +184 -0
  92. data/test/deploy/scm/mercurial_test.rb +129 -0
  93. data/test/deploy/scm/none_test.rb +35 -0
  94. data/test/deploy/strategy/copy_test.rb +258 -0
  95. data/test/extensions_test.rb +69 -0
  96. data/test/fixtures/cli_integration.rb +5 -0
  97. data/test/fixtures/config.rb +5 -0
  98. data/test/fixtures/custom.rb +3 -0
  99. data/test/logger_test.rb +123 -0
  100. data/test/role_test.rb +11 -0
  101. data/test/server_definition_test.rb +121 -0
  102. data/test/shell_test.rb +90 -0
  103. data/test/ssh_test.rb +104 -0
  104. data/test/task_definition_test.rb +101 -0
  105. data/test/transfer_test.rb +160 -0
  106. data/test/utils.rb +38 -0
  107. metadata +306 -0
@@ -0,0 +1,101 @@
1
+ require "utils"
2
+ require 'capistrano/task_definition'
3
+
4
+ class TaskDefinitionTest < Test::Unit::TestCase
5
+ def setup
6
+ @namespace = namespace
7
+ end
8
+
9
+ def test_fqn_at_top_level_should_be_task_name
10
+ task = new_task(:testing)
11
+ assert_equal "testing", task.fully_qualified_name
12
+ end
13
+
14
+ def test_fqn_in_namespace_should_include_namespace_fqn
15
+ ns = namespace("outer:inner")
16
+ task = new_task(:testing, ns)
17
+ assert_equal "outer:inner:testing", task.fully_qualified_name
18
+ end
19
+
20
+ def test_fqn_at_top_level_when_default_should_be_default
21
+ task = new_task(:default)
22
+ assert_equal "default", task.fully_qualified_name
23
+ end
24
+
25
+ def test_fqn_in_namespace_when_default_should_be_namespace_fqn
26
+ ns = namespace("outer:inner")
27
+ task = new_task(:default, ns)
28
+ ns.stubs(:default_task => task)
29
+ assert_equal "outer:inner", task.fully_qualified_name
30
+ end
31
+
32
+ def test_task_should_require_block
33
+ assert_raises(ArgumentError) do
34
+ Capistrano::TaskDefinition.new(:testing, @namespace)
35
+ end
36
+ end
37
+
38
+ def test_description_should_return_empty_string_if_not_given
39
+ assert_equal "", new_task(:testing).description
40
+ end
41
+
42
+ def test_description_should_return_desc_attribute
43
+ assert_equal "something", new_task(:testing, @namespace, :desc => "something").description
44
+ end
45
+
46
+ def test_description_should_strip_leading_and_trailing_whitespace
47
+ assert_equal "something", new_task(:testing, @namespace, :desc => " something ").description
48
+ end
49
+
50
+ def test_description_should_normalize_newlines
51
+ assert_equal "a\nb\nc", new_task(:testing, @namespace, :desc => "a\nb\r\nc").description
52
+ end
53
+
54
+ def test_description_should_detect_and_remove_indentation
55
+ desc = <<-DESC
56
+ Here is some indented text \
57
+ and I want all of this to \
58
+ run together on a single line, \
59
+ without any extraneous spaces.
60
+
61
+ additional indentation will
62
+ be preserved.
63
+ DESC
64
+
65
+ task = new_task(:testing, @namespace, :desc => desc)
66
+ assert_equal "Here is some indented text and I want all of this to run together on a single line, without any extraneous spaces.\n\n additional indentation will\n be preserved.", task.description
67
+ end
68
+
69
+ def test_description_munging_should_be_sensitive_to_code_blocks
70
+ desc = <<-DESC
71
+ Here is a line \
72
+ wrapped with spacing in it.
73
+
74
+ foo bar
75
+ baz bang
76
+ DESC
77
+
78
+ task = new_task(:testing, @namespace, :desc => desc)
79
+ assert_equal "Here is a line wrapped with spacing in it.\n\n foo bar\n baz bang", task.description
80
+ end
81
+
82
+ def test_brief_description_should_return_first_sentence_in_description
83
+ desc = "This is the task. It does all kinds of things."
84
+ task = new_task(:testing, @namespace, :desc => desc)
85
+ assert_equal "This is the task.", task.brief_description
86
+ end
87
+
88
+ def test_brief_description_should_truncate_if_length_given
89
+ desc = "This is the task that does all kinds of things. And then some."
90
+ task = new_task(:testing, @namespace, :desc => desc)
91
+ assert_equal "This is the task ...", task.brief_description(20)
92
+ end
93
+
94
+ def test_brief_description_should_not_break_at_period_in_middle_of_sentence
95
+ task = new_task(:testing, @namespace, :desc => "Take file.txt and copy it.")
96
+ assert_equal "Take file.txt and copy it.", task.brief_description
97
+
98
+ task = new_task(:testing, @namespace, :desc => "Take file.txt and copy it. Then do something else.")
99
+ assert_equal "Take file.txt and copy it.", task.brief_description
100
+ end
101
+ end
@@ -0,0 +1,160 @@
1
+ require 'utils'
2
+ require 'capistrano/transfer'
3
+
4
+ class TransferTest < Test::Unit::TestCase
5
+ def test_class_process_should_delegate_to_instance_process
6
+ Capistrano::Transfer.expects(:new).with(:up, "from", "to", %w(a b c), {}).returns(mock('transfer', :process! => nil)).yields
7
+ yielded = false
8
+ Capistrano::Transfer.process(:up, "from", "to", %w(a b c), {}) { yielded = true }
9
+ assert yielded
10
+ end
11
+
12
+ def test_default_transport_is_sftp
13
+ transfer = Capistrano::Transfer.new(:up, "from", "to", [])
14
+ assert_equal :sftp, transfer.transport
15
+ end
16
+
17
+ def test_active_is_true_when_any_sftp_transfers_are_active
18
+ returns = [false, false, true]
19
+ sessions = [session('app1', :sftp), session('app2', :sftp), session('app3', :sftp)].each { |s| s.xsftp.expects(:upload).returns(stub('operation', :active? => returns.shift)) }
20
+ transfer = Capistrano::Transfer.new(:up, "from", "to", sessions, :via => :sftp)
21
+ assert_equal true, transfer.active?
22
+ end
23
+
24
+ def test_active_is_false_when_all_sftp_transfers_are_not_active
25
+ sessions = [session('app1', :sftp), session('app2', :sftp)].each { |s| s.xsftp.expects(:upload).returns(stub('operation', :active? => false)) }
26
+ transfer = Capistrano::Transfer.new(:up, "from", "to", sessions, :via => :sftp)
27
+ assert_equal false, transfer.active?
28
+ end
29
+
30
+ def test_active_is_true_when_any_scp_transfers_are_active
31
+ returns = [false, false, true]
32
+ sessions = [session('app1', :scp), session('app2', :scp), session('app3', :scp)].each do |s|
33
+ channel = stub('channel', :[]= => nil, :active? => returns.shift)
34
+ s.scp.expects(:upload).returns(channel)
35
+ end
36
+ transfer = Capistrano::Transfer.new(:up, "from", "to", sessions, :via => :scp)
37
+ assert_equal true, transfer.active?
38
+ end
39
+
40
+ def test_active_is_false_when_all_scp_transfers_are_not_active
41
+ sessions = [session('app1', :scp), session('app2', :scp), session('app3', :scp)].each do |s|
42
+ channel = stub('channel', :[]= => nil, :active? => false)
43
+ s.scp.expects(:upload).returns(channel)
44
+ end
45
+ transfer = Capistrano::Transfer.new(:up, "from", "to", sessions, :via => :scp)
46
+ assert_equal false, transfer.active?
47
+ end
48
+
49
+ [:up, :down].each do |direction|
50
+ define_method("test_sftp_#{direction}load_from_file_to_file_should_normalize_from_and_to") do
51
+ sessions = [session('app1', :sftp), session('app2', :sftp)]
52
+
53
+ sessions.each do |session|
54
+ session.xsftp.expects("#{direction}load".to_sym).with("from-#{session.xserver.host}", "to-#{session.xserver.host}",
55
+ :properties => { :server => session.xserver, :host => session.xserver.host })
56
+ end
57
+
58
+ transfer = Capistrano::Transfer.new(direction, "from-$CAPISTRANO:HOST$", "to-$CAPISTRANO:HOST$", sessions)
59
+ end
60
+
61
+ define_method("test_scp_#{direction}load_from_file_to_file_should_normalize_from_and_to") do
62
+ sessions = [session('app1', :scp), session('app2', :scp)]
63
+
64
+ sessions.each do |session|
65
+ session.scp.expects("#{direction}load".to_sym).returns({}).with("from-#{session.xserver.host}", "to-#{session.xserver.host}", :via => :scp)
66
+ end
67
+
68
+ transfer = Capistrano::Transfer.new(direction, "from-$CAPISTRANO:HOST$", "to-$CAPISTRANO:HOST$", sessions, :via => :scp)
69
+ end
70
+ end
71
+
72
+ def test_sftp_upload_from_IO_to_file_should_clone_the_IO_for_each_connection
73
+ sessions = [session('app1', :sftp), session('app2', :sftp)]
74
+ io = StringIO.new("from here")
75
+
76
+ sessions.each do |session|
77
+ session.xsftp.expects(:upload).with do |from, to, opts|
78
+ from != io && from.is_a?(StringIO) && from.string == io.string &&
79
+ to == "/to/here-#{session.xserver.host}" &&
80
+ opts[:properties][:server] == session.xserver &&
81
+ opts[:properties][:host] == session.xserver.host
82
+ end
83
+ end
84
+
85
+ transfer = Capistrano::Transfer.new(:up, StringIO.new("from here"), "/to/here-$CAPISTRANO:HOST$", sessions)
86
+ end
87
+
88
+ def test_scp_upload_from_IO_to_file_should_clone_the_IO_for_each_connection
89
+ sessions = [session('app1', :scp), session('app2', :scp)]
90
+ io = StringIO.new("from here")
91
+
92
+ sessions.each do |session|
93
+ channel = mock('channel')
94
+ channel.expects(:[]=).with(:server, session.xserver)
95
+ channel.expects(:[]=).with(:host, session.xserver.host)
96
+ session.scp.expects(:upload).returns(channel).with do |from, to, opts|
97
+ from != io && from.is_a?(StringIO) && from.string == io.string &&
98
+ to == "/to/here-#{session.xserver.host}"
99
+ end
100
+ end
101
+
102
+ transfer = Capistrano::Transfer.new(:up, StringIO.new("from here"), "/to/here-$CAPISTRANO:HOST$", sessions, :via => :scp)
103
+ end
104
+
105
+ def test_process_should_block_until_transfer_is_no_longer_active
106
+ transfer = Capistrano::Transfer.new(:up, "from", "to", [])
107
+ transfer.expects(:process_iteration).times(4).yields.returns(true,true,true,false)
108
+ transfer.expects(:active?).times(4)
109
+ transfer.process!
110
+ end
111
+
112
+ def test_errors_raised_for_a_sftp_session_should_abort_session_and_continue_with_remaining_sessions
113
+ s = session('app1')
114
+ error = ExceptionWithSession.new(s)
115
+ transfer = Capistrano::Transfer.new(:up, "from", "to", [])
116
+ transfer.expects(:process_iteration).raises(error).times(3).returns(true, false)
117
+ txfr = mock('transfer', :abort! => true)
118
+ txfr.expects(:[]=).with(:failed, true)
119
+ txfr.expects(:[]=).with(:error, error)
120
+ transfer.expects(:session_map).returns(s => txfr)
121
+ transfer.process!
122
+ end
123
+
124
+ def test_errors_raised_for_a_scp_session_should_abort_session_and_continue_with_remaining_sessions
125
+ s = session('app1')
126
+ error = ExceptionWithSession.new(s)
127
+ transfer = Capistrano::Transfer.new(:up, "from", "to", [], :via => :scp)
128
+ transfer.expects(:process_iteration).raises(error).times(3).returns(true, false)
129
+ txfr = mock('channel', :close => true)
130
+ txfr.expects(:[]=).with(:failed, true)
131
+ txfr.expects(:[]=).with(:error, error)
132
+ transfer.expects(:session_map).returns(s => txfr)
133
+ transfer.process!
134
+ end
135
+
136
+ private
137
+
138
+ class ExceptionWithSession < ::Exception
139
+ attr_reader :session
140
+
141
+ def initialize(session)
142
+ @session = session
143
+ super()
144
+ end
145
+ end
146
+
147
+ def session(host, mode=nil)
148
+ session = stub('session', :xserver => stub('server', :host => host))
149
+ case mode
150
+ when :sftp
151
+ sftp = stub('sftp')
152
+ session.expects(:sftp).with(false).returns(sftp)
153
+ sftp.expects(:connect).yields(sftp).returns(sftp)
154
+ session.stubs(:xsftp).returns(sftp)
155
+ when :scp
156
+ session.stubs(:scp).returns(stub('scp'))
157
+ end
158
+ session
159
+ end
160
+ end
data/test/utils.rb ADDED
@@ -0,0 +1,38 @@
1
+ begin
2
+ require 'rubygems'
3
+ gem 'mocha'
4
+ rescue LoadError
5
+ end
6
+
7
+ require 'test/unit'
8
+ require 'mocha'
9
+ require 'capistrano/server_definition'
10
+
11
+ module TestExtensions
12
+ def server(host, options={})
13
+ Capistrano::ServerDefinition.new(host, options)
14
+ end
15
+
16
+ def namespace(fqn=nil)
17
+ space = stub(:roles => {}, :fully_qualified_name => fqn, :default_task => nil)
18
+ yield(space) if block_given?
19
+ space
20
+ end
21
+
22
+ def role(space, name, *args)
23
+ opts = args.last.is_a?(Hash) ? args.pop : {}
24
+ space.roles[name] ||= []
25
+ space.roles[name].concat(args.map { |h| Capistrano::ServerDefinition.new(h, opts) })
26
+ end
27
+
28
+ def new_task(name, namespace=@namespace, options={}, &block)
29
+ block ||= Proc.new {}
30
+ task = Capistrano::TaskDefinition.new(name, namespace, options, &block)
31
+ assert_equal block, task.body
32
+ return task
33
+ end
34
+ end
35
+
36
+ class Test::Unit::TestCase
37
+ include TestExtensions
38
+ end
metadata ADDED
@@ -0,0 +1,306 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dan-capistrano
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.5.6
5
+ platform: ruby
6
+ authors:
7
+ - Jamis Buck
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-13 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: net-ssh
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.0.10
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: net-sftp
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 2.0.0
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: net-scp
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 1.0.0
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: net-ssh-gateway
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.0
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: highline
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ description: Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.
66
+ email: jamis@jamisbuck.org
67
+ executables:
68
+ - cap
69
+ - capify
70
+ extensions: []
71
+
72
+ extra_rdoc_files:
73
+ - CHANGELOG.rdoc
74
+ - lib/capistrano/callback.rb
75
+ - lib/capistrano/cli/execute.rb
76
+ - lib/capistrano/cli/help.rb
77
+ - lib/capistrano/cli/help.txt
78
+ - lib/capistrano/cli/options.rb
79
+ - lib/capistrano/cli/ui.rb
80
+ - lib/capistrano/cli.rb
81
+ - lib/capistrano/command.rb
82
+ - lib/capistrano/configuration/actions/file_transfer.rb
83
+ - lib/capistrano/configuration/actions/inspect.rb
84
+ - lib/capistrano/configuration/actions/invocation.rb
85
+ - lib/capistrano/configuration/callbacks.rb
86
+ - lib/capistrano/configuration/connections.rb
87
+ - lib/capistrano/configuration/execution.rb
88
+ - lib/capistrano/configuration/loading.rb
89
+ - lib/capistrano/configuration/namespaces.rb
90
+ - lib/capistrano/configuration/roles.rb
91
+ - lib/capistrano/configuration/servers.rb
92
+ - lib/capistrano/configuration/variables.rb
93
+ - lib/capistrano/configuration.rb
94
+ - lib/capistrano/errors.rb
95
+ - lib/capistrano/extensions.rb
96
+ - lib/capistrano/logger.rb
97
+ - lib/capistrano/processable.rb
98
+ - lib/capistrano/recipes/compat.rb
99
+ - lib/capistrano/recipes/deploy/dependencies.rb
100
+ - lib/capistrano/recipes/deploy/local_dependency.rb
101
+ - lib/capistrano/recipes/deploy/remote_dependency.rb
102
+ - lib/capistrano/recipes/deploy/scm/accurev.rb
103
+ - lib/capistrano/recipes/deploy/scm/base.rb
104
+ - lib/capistrano/recipes/deploy/scm/bzr.rb
105
+ - lib/capistrano/recipes/deploy/scm/cvs.rb
106
+ - lib/capistrano/recipes/deploy/scm/darcs.rb
107
+ - lib/capistrano/recipes/deploy/scm/git.rb
108
+ - lib/capistrano/recipes/deploy/scm/mercurial.rb
109
+ - lib/capistrano/recipes/deploy/scm/none.rb
110
+ - lib/capistrano/recipes/deploy/scm/perforce.rb
111
+ - lib/capistrano/recipes/deploy/scm/subversion.rb
112
+ - lib/capistrano/recipes/deploy/scm.rb
113
+ - lib/capistrano/recipes/deploy/strategy/base.rb
114
+ - lib/capistrano/recipes/deploy/strategy/checkout.rb
115
+ - lib/capistrano/recipes/deploy/strategy/copy.rb
116
+ - lib/capistrano/recipes/deploy/strategy/export.rb
117
+ - lib/capistrano/recipes/deploy/strategy/remote.rb
118
+ - lib/capistrano/recipes/deploy/strategy/remote_cache.rb
119
+ - lib/capistrano/recipes/deploy/strategy.rb
120
+ - lib/capistrano/recipes/deploy/templates/maintenance.rhtml
121
+ - lib/capistrano/recipes/deploy.rb
122
+ - lib/capistrano/recipes/standard.rb
123
+ - lib/capistrano/recipes/templates/maintenance.rhtml
124
+ - lib/capistrano/recipes/upgrade.rb
125
+ - lib/capistrano/role.rb
126
+ - lib/capistrano/server_definition.rb
127
+ - lib/capistrano/shell.rb
128
+ - lib/capistrano/ssh.rb
129
+ - lib/capistrano/task_definition.rb
130
+ - lib/capistrano/transfer.rb
131
+ - lib/capistrano/version.rb
132
+ - lib/capistrano.rb
133
+ - README.rdoc
134
+ files:
135
+ - bin/cap
136
+ - bin/capify
137
+ - CHANGELOG.rdoc
138
+ - examples/sample.rb
139
+ - lib/capistrano/callback.rb
140
+ - lib/capistrano/cli/execute.rb
141
+ - lib/capistrano/cli/help.rb
142
+ - lib/capistrano/cli/help.txt
143
+ - lib/capistrano/cli/options.rb
144
+ - lib/capistrano/cli/ui.rb
145
+ - lib/capistrano/cli.rb
146
+ - lib/capistrano/command.rb
147
+ - lib/capistrano/configuration/actions/file_transfer.rb
148
+ - lib/capistrano/configuration/actions/inspect.rb
149
+ - lib/capistrano/configuration/actions/invocation.rb
150
+ - lib/capistrano/configuration/callbacks.rb
151
+ - lib/capistrano/configuration/connections.rb
152
+ - lib/capistrano/configuration/execution.rb
153
+ - lib/capistrano/configuration/loading.rb
154
+ - lib/capistrano/configuration/namespaces.rb
155
+ - lib/capistrano/configuration/roles.rb
156
+ - lib/capistrano/configuration/servers.rb
157
+ - lib/capistrano/configuration/variables.rb
158
+ - lib/capistrano/configuration.rb
159
+ - lib/capistrano/errors.rb
160
+ - lib/capistrano/extensions.rb
161
+ - lib/capistrano/logger.rb
162
+ - lib/capistrano/processable.rb
163
+ - lib/capistrano/recipes/compat.rb
164
+ - lib/capistrano/recipes/deploy/dependencies.rb
165
+ - lib/capistrano/recipes/deploy/local_dependency.rb
166
+ - lib/capistrano/recipes/deploy/remote_dependency.rb
167
+ - lib/capistrano/recipes/deploy/scm/accurev.rb
168
+ - lib/capistrano/recipes/deploy/scm/base.rb
169
+ - lib/capistrano/recipes/deploy/scm/bzr.rb
170
+ - lib/capistrano/recipes/deploy/scm/cvs.rb
171
+ - lib/capistrano/recipes/deploy/scm/darcs.rb
172
+ - lib/capistrano/recipes/deploy/scm/git.rb
173
+ - lib/capistrano/recipes/deploy/scm/mercurial.rb
174
+ - lib/capistrano/recipes/deploy/scm/none.rb
175
+ - lib/capistrano/recipes/deploy/scm/perforce.rb
176
+ - lib/capistrano/recipes/deploy/scm/subversion.rb
177
+ - lib/capistrano/recipes/deploy/scm.rb
178
+ - lib/capistrano/recipes/deploy/strategy/base.rb
179
+ - lib/capistrano/recipes/deploy/strategy/checkout.rb
180
+ - lib/capistrano/recipes/deploy/strategy/copy.rb
181
+ - lib/capistrano/recipes/deploy/strategy/export.rb
182
+ - lib/capistrano/recipes/deploy/strategy/remote.rb
183
+ - lib/capistrano/recipes/deploy/strategy/remote_cache.rb
184
+ - lib/capistrano/recipes/deploy/strategy.rb
185
+ - lib/capistrano/recipes/deploy/templates/maintenance.rhtml
186
+ - lib/capistrano/recipes/deploy.rb
187
+ - lib/capistrano/recipes/standard.rb
188
+ - lib/capistrano/recipes/templates/maintenance.rhtml
189
+ - lib/capistrano/recipes/upgrade.rb
190
+ - lib/capistrano/role.rb
191
+ - lib/capistrano/server_definition.rb
192
+ - lib/capistrano/shell.rb
193
+ - lib/capistrano/ssh.rb
194
+ - lib/capistrano/task_definition.rb
195
+ - lib/capistrano/transfer.rb
196
+ - lib/capistrano/version.rb
197
+ - lib/capistrano.rb
198
+ - Rakefile
199
+ - README.rdoc
200
+ - setup.rb
201
+ - test/cli/execute_test.rb
202
+ - test/cli/help_test.rb
203
+ - test/cli/options_test.rb
204
+ - test/cli/ui_test.rb
205
+ - test/cli_test.rb
206
+ - test/command_test.rb
207
+ - test/configuration/actions/file_transfer_test.rb
208
+ - test/configuration/actions/inspect_test.rb
209
+ - test/configuration/actions/invocation_test.rb
210
+ - test/configuration/callbacks_test.rb
211
+ - test/configuration/connections_test.rb
212
+ - test/configuration/execution_test.rb
213
+ - test/configuration/loading_test.rb
214
+ - test/configuration/namespace_dsl_test.rb
215
+ - test/configuration/roles_test.rb
216
+ - test/configuration/servers_test.rb
217
+ - test/configuration/variables_test.rb
218
+ - test/configuration_test.rb
219
+ - test/deploy/local_dependency_test.rb
220
+ - test/deploy/remote_dependency_test.rb
221
+ - test/deploy/scm/accurev_test.rb
222
+ - test/deploy/scm/base_test.rb
223
+ - test/deploy/scm/git_test.rb
224
+ - test/deploy/scm/mercurial_test.rb
225
+ - test/deploy/strategy/copy_test.rb
226
+ - test/extensions_test.rb
227
+ - test/fixtures/cli_integration.rb
228
+ - test/fixtures/config.rb
229
+ - test/fixtures/custom.rb
230
+ - test/logger_test.rb
231
+ - test/role_test.rb
232
+ - test/server_definition_test.rb
233
+ - test/shell_test.rb
234
+ - test/ssh_test.rb
235
+ - test/task_definition_test.rb
236
+ - test/transfer_test.rb
237
+ - test/utils.rb
238
+ - Manifest
239
+ - capistrano.gemspec
240
+ - test/deploy/scm/none_test.rb
241
+ has_rdoc: true
242
+ homepage: http://www.capify.org
243
+ post_install_message:
244
+ rdoc_options:
245
+ - --line-numbers
246
+ - --inline-source
247
+ - --title
248
+ - Capistrano
249
+ - --main
250
+ - README.rdoc
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: "0"
258
+ version:
259
+ required_rubygems_version: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: "1.2"
264
+ version:
265
+ requirements: []
266
+
267
+ rubyforge_project: capistrano
268
+ rubygems_version: 1.2.0
269
+ signing_key:
270
+ specification_version: 2
271
+ summary: Capistrano is a utility and framework for executing commands in parallel on multiple remote machines, via SSH.
272
+ test_files:
273
+ - test/cli/execute_test.rb
274
+ - test/cli/help_test.rb
275
+ - test/cli/options_test.rb
276
+ - test/cli/ui_test.rb
277
+ - test/cli_test.rb
278
+ - test/command_test.rb
279
+ - test/configuration/actions/file_transfer_test.rb
280
+ - test/configuration/actions/inspect_test.rb
281
+ - test/configuration/actions/invocation_test.rb
282
+ - test/configuration/callbacks_test.rb
283
+ - test/configuration/connections_test.rb
284
+ - test/configuration/execution_test.rb
285
+ - test/configuration/loading_test.rb
286
+ - test/configuration/namespace_dsl_test.rb
287
+ - test/configuration/roles_test.rb
288
+ - test/configuration/servers_test.rb
289
+ - test/configuration/variables_test.rb
290
+ - test/configuration_test.rb
291
+ - test/deploy/local_dependency_test.rb
292
+ - test/deploy/remote_dependency_test.rb
293
+ - test/deploy/scm/accurev_test.rb
294
+ - test/deploy/scm/base_test.rb
295
+ - test/deploy/scm/git_test.rb
296
+ - test/deploy/scm/mercurial_test.rb
297
+ - test/deploy/scm/none_test.rb
298
+ - test/deploy/strategy/copy_test.rb
299
+ - test/extensions_test.rb
300
+ - test/logger_test.rb
301
+ - test/role_test.rb
302
+ - test/server_definition_test.rb
303
+ - test/shell_test.rb
304
+ - test/ssh_test.rb
305
+ - test/task_definition_test.rb
306
+ - test/transfer_test.rb