minmb-capistrano 2.15.4

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 (119) hide show
  1. data/.gitignore +10 -0
  2. data/.travis.yml +7 -0
  3. data/CHANGELOG +1170 -0
  4. data/Gemfile +13 -0
  5. data/README.md +94 -0
  6. data/Rakefile +11 -0
  7. data/bin/cap +4 -0
  8. data/bin/capify +92 -0
  9. data/capistrano.gemspec +40 -0
  10. data/lib/capistrano.rb +5 -0
  11. data/lib/capistrano/callback.rb +45 -0
  12. data/lib/capistrano/cli.rb +47 -0
  13. data/lib/capistrano/cli/execute.rb +85 -0
  14. data/lib/capistrano/cli/help.rb +125 -0
  15. data/lib/capistrano/cli/help.txt +81 -0
  16. data/lib/capistrano/cli/options.rb +243 -0
  17. data/lib/capistrano/cli/ui.rb +40 -0
  18. data/lib/capistrano/command.rb +303 -0
  19. data/lib/capistrano/configuration.rb +57 -0
  20. data/lib/capistrano/configuration/actions/file_transfer.rb +50 -0
  21. data/lib/capistrano/configuration/actions/inspect.rb +46 -0
  22. data/lib/capistrano/configuration/actions/invocation.rb +329 -0
  23. data/lib/capistrano/configuration/alias_task.rb +26 -0
  24. data/lib/capistrano/configuration/callbacks.rb +147 -0
  25. data/lib/capistrano/configuration/connections.rb +237 -0
  26. data/lib/capistrano/configuration/execution.rb +142 -0
  27. data/lib/capistrano/configuration/loading.rb +205 -0
  28. data/lib/capistrano/configuration/log_formatters.rb +75 -0
  29. data/lib/capistrano/configuration/namespaces.rb +223 -0
  30. data/lib/capistrano/configuration/roles.rb +77 -0
  31. data/lib/capistrano/configuration/servers.rb +116 -0
  32. data/lib/capistrano/configuration/variables.rb +127 -0
  33. data/lib/capistrano/errors.rb +19 -0
  34. data/lib/capistrano/ext/multistage.rb +64 -0
  35. data/lib/capistrano/ext/string.rb +5 -0
  36. data/lib/capistrano/extensions.rb +57 -0
  37. data/lib/capistrano/fix_rake_deprecated_dsl.rb +8 -0
  38. data/lib/capistrano/logger.rb +166 -0
  39. data/lib/capistrano/processable.rb +57 -0
  40. data/lib/capistrano/recipes/compat.rb +32 -0
  41. data/lib/capistrano/recipes/deploy.rb +625 -0
  42. data/lib/capistrano/recipes/deploy/assets.rb +201 -0
  43. data/lib/capistrano/recipes/deploy/dependencies.rb +44 -0
  44. data/lib/capistrano/recipes/deploy/local_dependency.rb +54 -0
  45. data/lib/capistrano/recipes/deploy/remote_dependency.rb +117 -0
  46. data/lib/capistrano/recipes/deploy/scm.rb +19 -0
  47. data/lib/capistrano/recipes/deploy/scm/accurev.rb +169 -0
  48. data/lib/capistrano/recipes/deploy/scm/base.rb +200 -0
  49. data/lib/capistrano/recipes/deploy/scm/bzr.rb +86 -0
  50. data/lib/capistrano/recipes/deploy/scm/cvs.rb +153 -0
  51. data/lib/capistrano/recipes/deploy/scm/darcs.rb +96 -0
  52. data/lib/capistrano/recipes/deploy/scm/git.rb +293 -0
  53. data/lib/capistrano/recipes/deploy/scm/mercurial.rb +137 -0
  54. data/lib/capistrano/recipes/deploy/scm/none.rb +55 -0
  55. data/lib/capistrano/recipes/deploy/scm/perforce.rb +152 -0
  56. data/lib/capistrano/recipes/deploy/scm/subversion.rb +121 -0
  57. data/lib/capistrano/recipes/deploy/strategy.rb +19 -0
  58. data/lib/capistrano/recipes/deploy/strategy/base.rb +92 -0
  59. data/lib/capistrano/recipes/deploy/strategy/checkout.rb +20 -0
  60. data/lib/capistrano/recipes/deploy/strategy/copy.rb +338 -0
  61. data/lib/capistrano/recipes/deploy/strategy/export.rb +20 -0
  62. data/lib/capistrano/recipes/deploy/strategy/remote.rb +52 -0
  63. data/lib/capistrano/recipes/deploy/strategy/remote_cache.rb +57 -0
  64. data/lib/capistrano/recipes/deploy/strategy/unshared_remote_cache.rb +21 -0
  65. data/lib/capistrano/recipes/standard.rb +37 -0
  66. data/lib/capistrano/recipes/templates/maintenance.rhtml +53 -0
  67. data/lib/capistrano/role.rb +102 -0
  68. data/lib/capistrano/server_definition.rb +56 -0
  69. data/lib/capistrano/shell.rb +265 -0
  70. data/lib/capistrano/ssh.rb +95 -0
  71. data/lib/capistrano/task_definition.rb +77 -0
  72. data/lib/capistrano/transfer.rb +218 -0
  73. data/lib/capistrano/version.rb +11 -0
  74. data/test/cli/execute_test.rb +132 -0
  75. data/test/cli/help_test.rb +165 -0
  76. data/test/cli/options_test.rb +329 -0
  77. data/test/cli/ui_test.rb +28 -0
  78. data/test/cli_test.rb +17 -0
  79. data/test/command_test.rb +322 -0
  80. data/test/configuration/actions/file_transfer_test.rb +61 -0
  81. data/test/configuration/actions/inspect_test.rb +76 -0
  82. data/test/configuration/actions/invocation_test.rb +288 -0
  83. data/test/configuration/alias_task_test.rb +118 -0
  84. data/test/configuration/callbacks_test.rb +201 -0
  85. data/test/configuration/connections_test.rb +439 -0
  86. data/test/configuration/execution_test.rb +175 -0
  87. data/test/configuration/loading_test.rb +148 -0
  88. data/test/configuration/namespace_dsl_test.rb +332 -0
  89. data/test/configuration/roles_test.rb +157 -0
  90. data/test/configuration/servers_test.rb +183 -0
  91. data/test/configuration/variables_test.rb +190 -0
  92. data/test/configuration_test.rb +77 -0
  93. data/test/deploy/local_dependency_test.rb +76 -0
  94. data/test/deploy/remote_dependency_test.rb +146 -0
  95. data/test/deploy/scm/accurev_test.rb +23 -0
  96. data/test/deploy/scm/base_test.rb +55 -0
  97. data/test/deploy/scm/bzr_test.rb +51 -0
  98. data/test/deploy/scm/darcs_test.rb +37 -0
  99. data/test/deploy/scm/git_test.rb +221 -0
  100. data/test/deploy/scm/mercurial_test.rb +134 -0
  101. data/test/deploy/scm/none_test.rb +35 -0
  102. data/test/deploy/scm/perforce_test.rb +23 -0
  103. data/test/deploy/scm/subversion_test.rb +40 -0
  104. data/test/deploy/strategy/copy_test.rb +360 -0
  105. data/test/extensions_test.rb +69 -0
  106. data/test/fixtures/cli_integration.rb +5 -0
  107. data/test/fixtures/config.rb +5 -0
  108. data/test/fixtures/custom.rb +3 -0
  109. data/test/logger_formatting_test.rb +149 -0
  110. data/test/logger_test.rb +134 -0
  111. data/test/recipes_test.rb +25 -0
  112. data/test/role_test.rb +11 -0
  113. data/test/server_definition_test.rb +121 -0
  114. data/test/shell_test.rb +96 -0
  115. data/test/ssh_test.rb +113 -0
  116. data/test/task_definition_test.rb +117 -0
  117. data/test/transfer_test.rb +168 -0
  118. data/test/utils.rb +37 -0
  119. metadata +316 -0
@@ -0,0 +1,117 @@
1
+ require "utils"
2
+ require 'capistrano/task_definition'
3
+
4
+ # Silences the wanrnings raised in the two deprecation tests
5
+ $VERBOSE = nil
6
+
7
+ class TaskDefinitionTest < Test::Unit::TestCase
8
+ def setup
9
+ @namespace = namespace
10
+ end
11
+
12
+ def test_fqn_at_top_level_should_be_task_name
13
+ task = new_task(:testing)
14
+ assert_equal "testing", task.fully_qualified_name
15
+ end
16
+
17
+ def test_fqn_in_namespace_should_include_namespace_fqn
18
+ ns = namespace("outer:inner")
19
+ task = new_task(:testing, ns)
20
+ assert_equal "outer:inner:testing", task.fully_qualified_name
21
+ end
22
+
23
+ def test_fqn_at_top_level_when_default_should_be_default
24
+ task = new_task(:default)
25
+ assert_equal "default", task.fully_qualified_name
26
+ end
27
+
28
+ def test_name_should_change_task_name
29
+ task = new_task(:foo)
30
+ task.name = :bar
31
+
32
+ assert_equal :bar, task.name
33
+ end
34
+
35
+ def test_raise_an_exception_when_task_names_can_not_be_converted
36
+ task = new_task('valid task name')
37
+
38
+ assert_raises(ArgumentError) { task.name = ['invalid task name'] }
39
+ end
40
+
41
+ def test_fqn_in_namespace_when_default_should_be_namespace_fqn
42
+ ns = namespace("outer:inner")
43
+ task = new_task(:default, ns)
44
+ ns.stubs(:default_task => task)
45
+ assert_equal "outer:inner", task.fully_qualified_name
46
+ end
47
+
48
+ def test_task_should_require_block
49
+ assert_raises(ArgumentError) do
50
+ Capistrano::TaskDefinition.new(:testing, @namespace)
51
+ end
52
+ end
53
+
54
+ def test_description_should_return_empty_string_if_not_given
55
+ assert_equal "", new_task(:testing).description
56
+ end
57
+
58
+ def test_description_should_return_desc_attribute
59
+ assert_equal "something", new_task(:testing, @namespace, :desc => "something").description
60
+ end
61
+
62
+ def test_description_should_strip_leading_and_trailing_whitespace
63
+ assert_equal "something", new_task(:testing, @namespace, :desc => " something ").description
64
+ end
65
+
66
+ def test_description_should_normalize_newlines
67
+ assert_equal "a\nb\nc", new_task(:testing, @namespace, :desc => "a\nb\r\nc").description
68
+ end
69
+
70
+ def test_description_should_detect_and_remove_indentation
71
+ desc = <<-DESC
72
+ Here is some indented text \
73
+ and I want all of this to \
74
+ run together on a single line, \
75
+ without any extraneous spaces.
76
+
77
+ additional indentation will
78
+ be preserved.
79
+ DESC
80
+
81
+ task = new_task(:testing, @namespace, :desc => desc)
82
+ 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
83
+ end
84
+
85
+ def test_description_munging_should_be_sensitive_to_code_blocks
86
+ desc = <<-DESC
87
+ Here is a line \
88
+ wrapped with spacing in it.
89
+
90
+ foo bar
91
+ baz bang
92
+ DESC
93
+
94
+ task = new_task(:testing, @namespace, :desc => desc)
95
+ assert_equal "Here is a line wrapped with spacing in it.\n\n foo bar\n baz bang", task.description
96
+ end
97
+
98
+ def test_brief_description_should_return_first_sentence_in_description
99
+ desc = "This is the task. It does all kinds of things."
100
+ task = new_task(:testing, @namespace, :desc => desc)
101
+ assert_equal "This is the task.", task.brief_description
102
+ end
103
+
104
+ def test_brief_description_should_truncate_if_length_given
105
+ desc = "This is the task that does all kinds of things. And then some."
106
+ task = new_task(:testing, @namespace, :desc => desc)
107
+ assert_equal "This is the task ...", task.brief_description(20)
108
+ end
109
+
110
+ def test_brief_description_should_not_break_at_period_in_middle_of_sentence
111
+ task = new_task(:testing, @namespace, :desc => "Take file.txt and copy it.")
112
+ assert_equal "Take file.txt and copy it.", task.brief_description
113
+
114
+ task = new_task(:testing, @namespace, :desc => "Take file.txt and copy it. Then do something else.")
115
+ assert_equal "Take file.txt and copy it.", task.brief_description
116
+ end
117
+ end
@@ -0,0 +1,168 @@
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
+ def test_uploading_a_non_existing_file_should_raise_an_understandable_error
137
+ s = session('app1')
138
+ error = Capistrano::Processable::SessionAssociation.on(ArgumentError.new('expected a file to upload'), s)
139
+ transfer = Capistrano::Transfer.new(:up, "from", "to", [], :via => :scp)
140
+ transfer.expects(:process_iteration).raises(error)
141
+ assert_raise(ArgumentError, 'expected a file to upload') { transfer.process! }
142
+ end
143
+
144
+ private
145
+
146
+ class ExceptionWithSession < ::Exception
147
+ attr_reader :session
148
+
149
+ def initialize(session)
150
+ @session = session
151
+ super()
152
+ end
153
+ end
154
+
155
+ def session(host, mode=nil)
156
+ session = stub('session', :xserver => stub('server', :host => host))
157
+ case mode
158
+ when :sftp
159
+ sftp = stub('sftp')
160
+ session.expects(:sftp).with(false).returns(sftp)
161
+ sftp.expects(:connect).yields(sftp).returns(sftp)
162
+ session.stubs(:xsftp).returns(sftp)
163
+ when :scp
164
+ session.stubs(:scp).returns(stub('scp'))
165
+ end
166
+ session
167
+ end
168
+ end
data/test/utils.rb ADDED
@@ -0,0 +1,37 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+
4
+ require 'test/unit'
5
+ require 'mocha'
6
+
7
+ require 'capistrano/server_definition'
8
+ require 'pry'
9
+
10
+ module TestExtensions
11
+ def server(host, options={})
12
+ Capistrano::ServerDefinition.new(host, options)
13
+ end
14
+
15
+ def namespace(fqn=nil)
16
+ space = stub(:roles => {}, :fully_qualified_name => fqn, :default_task => nil)
17
+ yield(space) if block_given?
18
+ space
19
+ end
20
+
21
+ def role(space, name, *args)
22
+ opts = args.last.is_a?(Hash) ? args.pop : {}
23
+ space.roles[name] ||= []
24
+ space.roles[name].concat(args.map { |h| Capistrano::ServerDefinition.new(h, opts) })
25
+ end
26
+
27
+ def new_task(name, namespace=@namespace, options={}, &block)
28
+ block ||= Proc.new {}
29
+ task = Capistrano::TaskDefinition.new(name, namespace, options, &block)
30
+ assert_equal block, task.body
31
+ return task
32
+ end
33
+ end
34
+
35
+ class Test::Unit::TestCase
36
+ include TestExtensions
37
+ end
metadata ADDED
@@ -0,0 +1,316 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: minmb-capistrano
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.15.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jamis Buck
9
+ - Lee Hambley
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2013-05-22 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: highline
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
31
+ - !ruby/object:Gem::Dependency
32
+ name: minmb-net-ssh
33
+ requirement: !ruby/object:Gem::Requirement
34
+ none: false
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: 2.0.14
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: 2.0.14
47
+ - !ruby/object:Gem::Dependency
48
+ name: net-sftp
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 2.0.0
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ! '>='
61
+ - !ruby/object:Gem::Version
62
+ version: 2.0.0
63
+ - !ruby/object:Gem::Dependency
64
+ name: net-scp
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: 1.0.0
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 1.0.0
79
+ - !ruby/object:Gem::Dependency
80
+ name: net-ssh-gateway
81
+ requirement: !ruby/object:Gem::Requirement
82
+ none: false
83
+ requirements:
84
+ - - ! '>='
85
+ - !ruby/object:Gem::Version
86
+ version: 1.1.0
87
+ type: :runtime
88
+ prerelease: false
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: 1.1.0
95
+ - !ruby/object:Gem::Dependency
96
+ name: mocha
97
+ requirement: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - '='
101
+ - !ruby/object:Gem::Version
102
+ version: 0.9.12
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 0.9.12
111
+ description: Capistrano is a utility and framework for executing commands in parallel
112
+ on multiple remote machines, via SSH.
113
+ email:
114
+ - jamis@jamisbuck.org
115
+ - lee.hambley@gmail.com
116
+ executables:
117
+ - cap
118
+ - capify
119
+ extensions: []
120
+ extra_rdoc_files:
121
+ - README.md
122
+ files:
123
+ - .gitignore
124
+ - .travis.yml
125
+ - CHANGELOG
126
+ - Gemfile
127
+ - README.md
128
+ - Rakefile
129
+ - bin/cap
130
+ - bin/capify
131
+ - capistrano.gemspec
132
+ - lib/capistrano.rb
133
+ - lib/capistrano/callback.rb
134
+ - lib/capistrano/cli.rb
135
+ - lib/capistrano/cli/execute.rb
136
+ - lib/capistrano/cli/help.rb
137
+ - lib/capistrano/cli/help.txt
138
+ - lib/capistrano/cli/options.rb
139
+ - lib/capistrano/cli/ui.rb
140
+ - lib/capistrano/command.rb
141
+ - lib/capistrano/configuration.rb
142
+ - lib/capistrano/configuration/actions/file_transfer.rb
143
+ - lib/capistrano/configuration/actions/inspect.rb
144
+ - lib/capistrano/configuration/actions/invocation.rb
145
+ - lib/capistrano/configuration/alias_task.rb
146
+ - lib/capistrano/configuration/callbacks.rb
147
+ - lib/capistrano/configuration/connections.rb
148
+ - lib/capistrano/configuration/execution.rb
149
+ - lib/capistrano/configuration/loading.rb
150
+ - lib/capistrano/configuration/log_formatters.rb
151
+ - lib/capistrano/configuration/namespaces.rb
152
+ - lib/capistrano/configuration/roles.rb
153
+ - lib/capistrano/configuration/servers.rb
154
+ - lib/capistrano/configuration/variables.rb
155
+ - lib/capistrano/errors.rb
156
+ - lib/capistrano/ext/multistage.rb
157
+ - lib/capistrano/ext/string.rb
158
+ - lib/capistrano/extensions.rb
159
+ - lib/capistrano/fix_rake_deprecated_dsl.rb
160
+ - lib/capistrano/logger.rb
161
+ - lib/capistrano/processable.rb
162
+ - lib/capistrano/recipes/compat.rb
163
+ - lib/capistrano/recipes/deploy.rb
164
+ - lib/capistrano/recipes/deploy/assets.rb
165
+ - lib/capistrano/recipes/deploy/dependencies.rb
166
+ - lib/capistrano/recipes/deploy/local_dependency.rb
167
+ - lib/capistrano/recipes/deploy/remote_dependency.rb
168
+ - lib/capistrano/recipes/deploy/scm.rb
169
+ - lib/capistrano/recipes/deploy/scm/accurev.rb
170
+ - lib/capistrano/recipes/deploy/scm/base.rb
171
+ - lib/capistrano/recipes/deploy/scm/bzr.rb
172
+ - lib/capistrano/recipes/deploy/scm/cvs.rb
173
+ - lib/capistrano/recipes/deploy/scm/darcs.rb
174
+ - lib/capistrano/recipes/deploy/scm/git.rb
175
+ - lib/capistrano/recipes/deploy/scm/mercurial.rb
176
+ - lib/capistrano/recipes/deploy/scm/none.rb
177
+ - lib/capistrano/recipes/deploy/scm/perforce.rb
178
+ - lib/capistrano/recipes/deploy/scm/subversion.rb
179
+ - lib/capistrano/recipes/deploy/strategy.rb
180
+ - lib/capistrano/recipes/deploy/strategy/base.rb
181
+ - lib/capistrano/recipes/deploy/strategy/checkout.rb
182
+ - lib/capistrano/recipes/deploy/strategy/copy.rb
183
+ - lib/capistrano/recipes/deploy/strategy/export.rb
184
+ - lib/capistrano/recipes/deploy/strategy/remote.rb
185
+ - lib/capistrano/recipes/deploy/strategy/remote_cache.rb
186
+ - lib/capistrano/recipes/deploy/strategy/unshared_remote_cache.rb
187
+ - lib/capistrano/recipes/standard.rb
188
+ - lib/capistrano/recipes/templates/maintenance.rhtml
189
+ - lib/capistrano/role.rb
190
+ - lib/capistrano/server_definition.rb
191
+ - lib/capistrano/shell.rb
192
+ - lib/capistrano/ssh.rb
193
+ - lib/capistrano/task_definition.rb
194
+ - lib/capistrano/transfer.rb
195
+ - lib/capistrano/version.rb
196
+ - test/cli/execute_test.rb
197
+ - test/cli/help_test.rb
198
+ - test/cli/options_test.rb
199
+ - test/cli/ui_test.rb
200
+ - test/cli_test.rb
201
+ - test/command_test.rb
202
+ - test/configuration/actions/file_transfer_test.rb
203
+ - test/configuration/actions/inspect_test.rb
204
+ - test/configuration/actions/invocation_test.rb
205
+ - test/configuration/alias_task_test.rb
206
+ - test/configuration/callbacks_test.rb
207
+ - test/configuration/connections_test.rb
208
+ - test/configuration/execution_test.rb
209
+ - test/configuration/loading_test.rb
210
+ - test/configuration/namespace_dsl_test.rb
211
+ - test/configuration/roles_test.rb
212
+ - test/configuration/servers_test.rb
213
+ - test/configuration/variables_test.rb
214
+ - test/configuration_test.rb
215
+ - test/deploy/local_dependency_test.rb
216
+ - test/deploy/remote_dependency_test.rb
217
+ - test/deploy/scm/accurev_test.rb
218
+ - test/deploy/scm/base_test.rb
219
+ - test/deploy/scm/bzr_test.rb
220
+ - test/deploy/scm/darcs_test.rb
221
+ - test/deploy/scm/git_test.rb
222
+ - test/deploy/scm/mercurial_test.rb
223
+ - test/deploy/scm/none_test.rb
224
+ - test/deploy/scm/perforce_test.rb
225
+ - test/deploy/scm/subversion_test.rb
226
+ - test/deploy/strategy/copy_test.rb
227
+ - test/extensions_test.rb
228
+ - test/fixtures/cli_integration.rb
229
+ - test/fixtures/config.rb
230
+ - test/fixtures/custom.rb
231
+ - test/logger_formatting_test.rb
232
+ - test/logger_test.rb
233
+ - test/recipes_test.rb
234
+ - test/role_test.rb
235
+ - test/server_definition_test.rb
236
+ - test/shell_test.rb
237
+ - test/ssh_test.rb
238
+ - test/task_definition_test.rb
239
+ - test/transfer_test.rb
240
+ - test/utils.rb
241
+ homepage: http://github.com/minmb/capistrano
242
+ licenses: []
243
+ post_install_message:
244
+ rdoc_options: []
245
+ require_paths:
246
+ - lib
247
+ required_ruby_version: !ruby/object:Gem::Requirement
248
+ none: false
249
+ requirements:
250
+ - - ! '>='
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
253
+ segments:
254
+ - 0
255
+ hash: 313284462763168952
256
+ required_rubygems_version: !ruby/object:Gem::Requirement
257
+ none: false
258
+ requirements:
259
+ - - ! '>='
260
+ - !ruby/object:Gem::Version
261
+ version: '0'
262
+ segments:
263
+ - 0
264
+ hash: 313284462763168952
265
+ requirements: []
266
+ rubyforge_project:
267
+ rubygems_version: 1.8.24
268
+ signing_key:
269
+ specification_version: 3
270
+ summary: Capistrano - Welcome to easy deployment with Ruby over SSH
271
+ test_files:
272
+ - test/cli/execute_test.rb
273
+ - test/cli/help_test.rb
274
+ - test/cli/options_test.rb
275
+ - test/cli/ui_test.rb
276
+ - test/cli_test.rb
277
+ - test/command_test.rb
278
+ - test/configuration/actions/file_transfer_test.rb
279
+ - test/configuration/actions/inspect_test.rb
280
+ - test/configuration/actions/invocation_test.rb
281
+ - test/configuration/alias_task_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/bzr_test.rb
296
+ - test/deploy/scm/darcs_test.rb
297
+ - test/deploy/scm/git_test.rb
298
+ - test/deploy/scm/mercurial_test.rb
299
+ - test/deploy/scm/none_test.rb
300
+ - test/deploy/scm/perforce_test.rb
301
+ - test/deploy/scm/subversion_test.rb
302
+ - test/deploy/strategy/copy_test.rb
303
+ - test/extensions_test.rb
304
+ - test/fixtures/cli_integration.rb
305
+ - test/fixtures/config.rb
306
+ - test/fixtures/custom.rb
307
+ - test/logger_formatting_test.rb
308
+ - test/logger_test.rb
309
+ - test/recipes_test.rb
310
+ - test/role_test.rb
311
+ - test/server_definition_test.rb
312
+ - test/shell_test.rb
313
+ - test/ssh_test.rb
314
+ - test/task_definition_test.rb
315
+ - test/transfer_test.rb
316
+ - test/utils.rb