cape 1.0.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 (45) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +6 -0
  3. data/.travis.yml +7 -0
  4. data/.yardopts +1 -0
  5. data/Gemfile +18 -0
  6. data/History.markdown +7 -0
  7. data/MIT-LICENSE.markdown +10 -0
  8. data/README.markdown +157 -0
  9. data/Rakefile +49 -0
  10. data/cape.gemspec +36 -0
  11. data/features/dsl/each_rake_task/with_defined_namespace_argument.feature +43 -0
  12. data/features/dsl/each_rake_task/with_defined_task_argument.feature +37 -0
  13. data/features/dsl/each_rake_task/with_undefined_argument.feature +31 -0
  14. data/features/dsl/each_rake_task/without_arguments.feature +81 -0
  15. data/features/dsl/mirror_rake_tasks/inside_capistrano_namespace/with_defined_namespace_argument.feature +93 -0
  16. data/features/dsl/mirror_rake_tasks/inside_capistrano_namespace/with_defined_task_argument.feature +66 -0
  17. data/features/dsl/mirror_rake_tasks/inside_capistrano_namespace/with_undefined_argument.feature +39 -0
  18. data/features/dsl/mirror_rake_tasks/inside_capistrano_namespace/without_arguments.feature +263 -0
  19. data/features/dsl/mirror_rake_tasks/with_defined_namespace_argument.feature +85 -0
  20. data/features/dsl/mirror_rake_tasks/with_defined_task_argument.feature +60 -0
  21. data/features/dsl/mirror_rake_tasks/with_undefined_argument.feature +35 -0
  22. data/features/dsl/mirror_rake_tasks/without_arguments.feature +243 -0
  23. data/features/step_definitions.rb +33 -0
  24. data/features/support/env.rb +1 -0
  25. data/features/task_invocation/nonparameterized.feature +69 -0
  26. data/features/task_invocation/parameterized.feature +70 -0
  27. data/lib/cape.rb +22 -0
  28. data/lib/cape/capistrano.rb +86 -0
  29. data/lib/cape/core_ext.rb +10 -0
  30. data/lib/cape/core_ext/hash.rb +24 -0
  31. data/lib/cape/core_ext/symbol.rb +25 -0
  32. data/lib/cape/dsl.rb +81 -0
  33. data/lib/cape/rake.rb +60 -0
  34. data/lib/cape/strings.rb +25 -0
  35. data/lib/cape/version.rb +6 -0
  36. data/spec/cape/capistrano_spec.rb +0 -0
  37. data/spec/cape/core_ext/hash_spec.rb +12 -0
  38. data/spec/cape/core_ext/symbol_spec.rb +7 -0
  39. data/spec/cape/dsl_spec.rb +128 -0
  40. data/spec/cape/rake_spec.rb +0 -0
  41. data/spec/cape/strings_spec.rb +44 -0
  42. data/spec/cape/task_spec.rb +0 -0
  43. data/spec/cape/version_spec.rb +6 -0
  44. data/spec/cape_spec.rb +5 -0
  45. metadata +192 -0
@@ -0,0 +1,85 @@
1
+ Feature: The #mirror_rake_tasks DSL method with an argument of a defined namespace
2
+
3
+ In order to include Rake tasks with descriptions in my Capistrano recipes,
4
+ As a developer using Cape,
5
+ I want to use the Cape DSL.
6
+
7
+ Scenario: mirror only the Rake tasks in the matching namespace
8
+ Given a full-featured Rakefile
9
+ And a file named "Capfile" with:
10
+ """
11
+ require 'cape'
12
+
13
+ Cape do
14
+ mirror_rake_tasks 'my_namespace'
15
+ end
16
+ """
17
+ When I run `cap -T`
18
+ Then the output should not contain "cap with_period"
19
+ And the output should contain:
20
+ """
21
+ cap my_namespace:in_a_namespace # My task in a namespace.
22
+ """
23
+ And the output should contain:
24
+ """
25
+ cap my_namespace:my_nested_namespace:in_a_nested_namespace # My task in a nested namespace.
26
+ """
27
+
28
+ Scenario: do not mirror Rake task 'with_period'
29
+ Given a full-featured Rakefile
30
+ And a file named "Capfile" with:
31
+ """
32
+ require 'cape'
33
+
34
+ Cape do
35
+ mirror_rake_tasks :my_namespace
36
+ end
37
+ """
38
+ When I run `cap -e with_period`
39
+ Then the output should contain exactly:
40
+ """
41
+ The task `with_period' does not exist.
42
+
43
+ """
44
+
45
+ Scenario: mirror Rake task 'my_namespace:in_a_namespace' with its description
46
+ Given a full-featured Rakefile
47
+ And a file named "Capfile" with:
48
+ """
49
+ require 'cape'
50
+
51
+ Cape do
52
+ mirror_rake_tasks :my_namespace
53
+ end
54
+ """
55
+ When I run `cap -e my_namespace:in_a_namespace`
56
+ Then the output should contain exactly:
57
+ """
58
+ ------------------------------------------------------------
59
+ cap my_namespace:in_a_namespace
60
+ ------------------------------------------------------------
61
+ My task in a namespace.
62
+
63
+
64
+ """
65
+
66
+ Scenario: mirror Rake task 'my_namespace:my_nested_namespace:in_a_nested_namespace' with its description
67
+ Given a full-featured Rakefile
68
+ And a file named "Capfile" with:
69
+ """
70
+ require 'cape'
71
+
72
+ Cape do
73
+ mirror_rake_tasks :my_namespace
74
+ end
75
+ """
76
+ When I run `cap -e my_namespace:my_nested_namespace:in_a_nested_namespace`
77
+ Then the output should contain exactly:
78
+ """
79
+ ------------------------------------------------------------
80
+ cap my_namespace:my_nested_namespace:in_a_nested_namespace
81
+ ------------------------------------------------------------
82
+ My task in a nested namespace.
83
+
84
+
85
+ """
@@ -0,0 +1,60 @@
1
+ Feature: The #mirror_rake_tasks DSL method with an argument of a defined task
2
+
3
+ In order to include Rake tasks with descriptions in my Capistrano recipes,
4
+ As a developer using Cape,
5
+ I want to use the Cape DSL.
6
+
7
+ Scenario: mirror only the matching Rake task
8
+ Given a full-featured Rakefile
9
+ And a file named "Capfile" with:
10
+ """
11
+ require 'cape'
12
+
13
+ Cape do
14
+ mirror_rake_tasks 'with_period'
15
+ end
16
+ """
17
+ When I run `cap -T`
18
+ Then the output should contain:
19
+ """
20
+ cap with_period # Ends with period.
21
+ """
22
+ And the output should not contain "cap without_period"
23
+
24
+ Scenario: mirror Rake task 'with_period' with its description
25
+ Given a full-featured Rakefile
26
+ And a file named "Capfile" with:
27
+ """
28
+ require 'cape'
29
+
30
+ Cape do
31
+ mirror_rake_tasks :with_period
32
+ end
33
+ """
34
+ When I run `cap -e with_period`
35
+ Then the output should contain exactly:
36
+ """
37
+ ------------------------------------------------------------
38
+ cap with_period
39
+ ------------------------------------------------------------
40
+ Ends with period.
41
+
42
+
43
+ """
44
+
45
+ Scenario: do not mirror Rake task 'without_period'
46
+ Given a full-featured Rakefile
47
+ And a file named "Capfile" with:
48
+ """
49
+ require 'cape'
50
+
51
+ Cape do
52
+ mirror_rake_tasks :with_period
53
+ end
54
+ """
55
+ When I run `cap -e without_period`
56
+ Then the output should contain exactly:
57
+ """
58
+ The task `without_period' does not exist.
59
+
60
+ """
@@ -0,0 +1,35 @@
1
+ Feature: The #mirror_rake_tasks DSL method with an undefined argument
2
+
3
+ In order to include Rake tasks with descriptions in my Capistrano recipes,
4
+ As a developer using Cape,
5
+ I want to use the Cape DSL.
6
+
7
+ Scenario: do not mirror any Rake tasks
8
+ Given a full-featured Rakefile
9
+ And a file named "Capfile" with:
10
+ """
11
+ require 'cape'
12
+
13
+ Cape do
14
+ mirror_rake_tasks 'this_does_not_exist'
15
+ end
16
+ """
17
+ When I run `cap -T`
18
+ Then the output should not contain "cap with_period"
19
+
20
+ Scenario: do not mirror Rake task 'with_period'
21
+ Given a full-featured Rakefile
22
+ And a file named "Capfile" with:
23
+ """
24
+ require 'cape'
25
+
26
+ Cape do
27
+ mirror_rake_tasks :this_does_not_exist
28
+ end
29
+ """
30
+ When I run `cap -e with_period`
31
+ Then the output should contain exactly:
32
+ """
33
+ The task `with_period' does not exist.
34
+
35
+ """
@@ -0,0 +1,243 @@
1
+ Feature: The #mirror_rake_tasks DSL method without arguments
2
+
3
+ In order to include Rake tasks with descriptions in my Capistrano recipes,
4
+ As a developer using Cape,
5
+ I want to use the Cape DSL.
6
+
7
+ Scenario: mirror all non-hidden Rake tasks
8
+ Given a full-featured Rakefile
9
+ And a file named "Capfile" with:
10
+ """
11
+ require 'cape'
12
+
13
+ Cape do
14
+ mirror_rake_tasks
15
+ end
16
+ """
17
+ When I run `cap -T`
18
+ Then the output should contain:
19
+ """
20
+ cap with_period # Ends with period.
21
+ """
22
+ And the output should contain:
23
+ """
24
+ cap without_period # Ends without period.
25
+ """
26
+ And the output should contain:
27
+ """
28
+ cap long # My long task -- it has a ve...
29
+ """
30
+ And the output should contain:
31
+ """
32
+ cap with_one_arg # My task with one argument.
33
+ """
34
+ And the output should contain:
35
+ """
36
+ cap my_namespace:in_a_namespace # My task in a namespace.
37
+ """
38
+ And the output should contain:
39
+ """
40
+ cap my_namespace:my_nested_namespace:in_a_nested_namespace # My task in a nested namespace.
41
+ """
42
+ And the output should contain:
43
+ """
44
+ cap with_two_args # My task with two arguments.
45
+ """
46
+ And the output should contain:
47
+ """
48
+ cap with_three_args # My task with three arguments.
49
+ """
50
+ And the output should not contain "cap hidden_task"
51
+
52
+ Scenario: mirror Rake task 'with_period' with its description
53
+ Given a full-featured Rakefile
54
+ And a file named "Capfile" with:
55
+ """
56
+ require 'cape'
57
+
58
+ Cape do
59
+ mirror_rake_tasks
60
+ end
61
+ """
62
+ When I run `cap -e with_period`
63
+ Then the output should contain exactly:
64
+ """
65
+ ------------------------------------------------------------
66
+ cap with_period
67
+ ------------------------------------------------------------
68
+ Ends with period.
69
+
70
+
71
+ """
72
+
73
+ Scenario: mirror Rake task 'without_period' with its description
74
+ Given a full-featured Rakefile
75
+ And a file named "Capfile" with:
76
+ """
77
+ require 'cape'
78
+
79
+ Cape do
80
+ mirror_rake_tasks
81
+ end
82
+ """
83
+ When I run `cap -e without_period`
84
+ Then the output should contain exactly:
85
+ """
86
+ ------------------------------------------------------------
87
+ cap without_period
88
+ ------------------------------------------------------------
89
+ Ends without period.
90
+
91
+
92
+ """
93
+
94
+ Scenario: mirror Rake task 'long' with its description
95
+ Given a full-featured Rakefile
96
+ And a file named "Capfile" with:
97
+ """
98
+ require 'cape'
99
+
100
+ Cape do
101
+ mirror_rake_tasks
102
+ end
103
+ """
104
+ When I run `cap -e long`
105
+ Then the output should contain exactly:
106
+ """
107
+ ------------------------------------------------------------
108
+ cap long
109
+ ------------------------------------------------------------
110
+ My long task -- it has a very, very, very, very, very, very, very, very, very,
111
+ very, very, very, very, very, very, very, very, very, very, very, very, very,
112
+ very, very, very, very long description.
113
+
114
+
115
+ """
116
+
117
+ Scenario: mirror Rake task 'with_one_arg' with its description
118
+ Given a full-featured Rakefile
119
+ And a file named "Capfile" with:
120
+ """
121
+ require 'cape'
122
+
123
+ Cape do
124
+ mirror_rake_tasks
125
+ end
126
+ """
127
+ When I run `cap -e with_one_arg`
128
+ Then the output should contain exactly:
129
+ """
130
+ ------------------------------------------------------------
131
+ cap with_one_arg
132
+ ------------------------------------------------------------
133
+ My task with one argument.
134
+
135
+ You must set environment variable THE_ARG.
136
+
137
+
138
+ """
139
+
140
+ Scenario: mirror Rake task 'my_namespace:in_a_namespace' with its description
141
+ Given a full-featured Rakefile
142
+ And a file named "Capfile" with:
143
+ """
144
+ require 'cape'
145
+
146
+ Cape do
147
+ mirror_rake_tasks
148
+ end
149
+ """
150
+ When I run `cap -e my_namespace:in_a_namespace`
151
+ Then the output should contain exactly:
152
+ """
153
+ ------------------------------------------------------------
154
+ cap my_namespace:in_a_namespace
155
+ ------------------------------------------------------------
156
+ My task in a namespace.
157
+
158
+
159
+ """
160
+
161
+ Scenario: mirror Rake task 'my_namespace:my_nested_namespace:in_a_nested_namespace' with its description
162
+ Given a full-featured Rakefile
163
+ And a file named "Capfile" with:
164
+ """
165
+ require 'cape'
166
+
167
+ Cape do
168
+ mirror_rake_tasks
169
+ end
170
+ """
171
+ When I run `cap -e my_namespace:my_nested_namespace:in_a_nested_namespace`
172
+ Then the output should contain exactly:
173
+ """
174
+ ------------------------------------------------------------
175
+ cap my_namespace:my_nested_namespace:in_a_nested_namespace
176
+ ------------------------------------------------------------
177
+ My task in a nested namespace.
178
+
179
+
180
+ """
181
+
182
+ Scenario: mirror Rake task 'with_two_args' with its description
183
+ Given a full-featured Rakefile
184
+ And a file named "Capfile" with:
185
+ """
186
+ require 'cape'
187
+
188
+ Cape do
189
+ mirror_rake_tasks
190
+ end
191
+ """
192
+ When I run `cap -e with_two_args`
193
+ Then the output should contain exactly:
194
+ """
195
+ ------------------------------------------------------------
196
+ cap with_two_args
197
+ ------------------------------------------------------------
198
+ My task with two arguments.
199
+
200
+ You must set environment variables MY_ARG1 and MY_ARG2.
201
+
202
+
203
+ """
204
+
205
+ Scenario: mirror Rake task 'with_three_args' with its description
206
+ Given a full-featured Rakefile
207
+ And a file named "Capfile" with:
208
+ """
209
+ require 'cape'
210
+
211
+ Cape do
212
+ mirror_rake_tasks
213
+ end
214
+ """
215
+ When I run `cap -e with_three_args`
216
+ Then the output should contain exactly:
217
+ """
218
+ ------------------------------------------------------------
219
+ cap with_three_args
220
+ ------------------------------------------------------------
221
+ My task with three arguments.
222
+
223
+ You must set environment variables AN_ARG1, AN_ARG2, and AN_ARG3.
224
+
225
+
226
+ """
227
+
228
+ Scenario: do not mirror Rake task 'hidden_task'
229
+ Given a full-featured Rakefile
230
+ And a file named "Capfile" with:
231
+ """
232
+ require 'cape'
233
+
234
+ Cape do
235
+ mirror_rake_tasks
236
+ end
237
+ """
238
+ When I run `cap -e hidden_task`
239
+ Then the output should contain exactly:
240
+ """
241
+ The task `hidden_task' does not exist.
242
+
243
+ """
@@ -0,0 +1,33 @@
1
+ Given 'a full-featured Rakefile' do
2
+ step 'a file named "Rakefile" with:', <<-end_step
3
+ desc 'Ends with period.'
4
+ task :with_period
5
+
6
+ desc 'Ends without period'
7
+ task :without_period
8
+
9
+ desc 'My long task -- it has a very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very, very long description'
10
+ task :long
11
+
12
+ desc 'My task with one argument'
13
+ task :with_one_arg, [:the_arg]
14
+
15
+ namespace :my_namespace do
16
+ desc 'My task in a namespace'
17
+ task :in_a_namespace
18
+
19
+ namespace :my_nested_namespace do
20
+ desc 'My task in a nested namespace'
21
+ task :in_a_nested_namespace
22
+ end
23
+ end
24
+
25
+ desc 'My task with two arguments'
26
+ task :with_two_args, [:my_arg1, :my_arg2]
27
+
28
+ desc 'My task with three arguments'
29
+ task :with_three_args, [:an_arg1, :an_arg2, :an_arg3]
30
+
31
+ task :hidden_task
32
+ end_step
33
+ end