cape 1.7.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -1
  3. data/.rspec +1 -1
  4. data/.travis.yml +6 -2
  5. data/Appraisals +11 -0
  6. data/Gemfile +4 -4
  7. data/Guardfile +10 -4
  8. data/History.markdown +6 -0
  9. data/README.markdown +32 -17
  10. data/Rakefile +33 -13
  11. data/cape.gemspec +6 -2
  12. data/features/dsl/each_rake_task/unqualified.feature +0 -6
  13. data/features/dsl/each_rake_task/with_defined_namespace.feature +1 -1
  14. data/features/dsl/each_rake_task/with_defined_task.feature +4 -4
  15. data/features/dsl/each_rake_task/with_undefined_task_or_namespace.feature +2 -2
  16. data/features/dsl/mirror_rake_tasks/inside_capistrano_namespace.feature +3 -4
  17. data/features/dsl/mirror_rake_tasks/unqualified.feature +89 -32
  18. data/features/dsl/mirror_rake_tasks/with_cd.feature +18 -12
  19. data/features/dsl/mirror_rake_tasks/with_cd_and_environment_variables.feature +6 -4
  20. data/features/dsl/mirror_rake_tasks/with_defined_namespace.feature +7 -3
  21. data/features/dsl/mirror_rake_tasks/with_defined_task.feature +10 -8
  22. data/features/dsl/mirror_rake_tasks/with_defined_task_and_cd.feature +10 -8
  23. data/features/dsl/mirror_rake_tasks/with_defined_task_and_cd_and_environment_variables.feature +10 -8
  24. data/features/dsl/mirror_rake_tasks/with_defined_task_and_environment_variables.feature +21 -17
  25. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename.feature +4 -2
  26. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_cd.feature +4 -2
  27. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_cd_and_environment_variables.feature +4 -2
  28. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_environment_variables.feature +4 -2
  29. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_valid_options.feature +4 -2
  30. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_valid_options_and_cd.feature +4 -2
  31. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_valid_options_and_cd_and_environment_variables.feature +4 -2
  32. data/features/dsl/mirror_rake_tasks/with_defined_task_and_rename_and_valid_options_and_environment_variables.feature +4 -2
  33. data/features/dsl/mirror_rake_tasks/with_defined_task_and_valid_options.feature +22 -18
  34. data/features/dsl/mirror_rake_tasks/with_defined_task_and_valid_options_and_cd.feature +10 -8
  35. data/features/dsl/mirror_rake_tasks/with_defined_task_and_valid_options_and_cd_and_environment_variables.feature +10 -8
  36. data/features/dsl/mirror_rake_tasks/with_defined_task_and_valid_options_and_environment_variables.feature +22 -18
  37. data/features/dsl/mirror_rake_tasks/with_environment_variables.feature +14 -10
  38. data/features/dsl/mirror_rake_tasks/with_rename.feature +3 -1
  39. data/features/dsl/mirror_rake_tasks/with_rename_and_cd.feature +3 -1
  40. data/features/dsl/mirror_rake_tasks/with_rename_and_cd_and_environment_variables.feature +3 -1
  41. data/features/dsl/mirror_rake_tasks/with_rename_and_environment_variables.feature +3 -1
  42. data/features/dsl/mirror_rake_tasks/with_rename_and_valid_options.feature +3 -1
  43. data/features/dsl/mirror_rake_tasks/with_rename_and_valid_options_and_cd.feature +3 -1
  44. data/features/dsl/mirror_rake_tasks/with_rename_and_valid_options_and_cd_and_environment_variables.feature +3 -1
  45. data/features/dsl/mirror_rake_tasks/with_rename_and_valid_options_and_environment_variables.feature +3 -1
  46. data/features/dsl/mirror_rake_tasks/with_undefined_task_or_namespace.feature +2 -2
  47. data/features/dsl/mirror_rake_tasks/with_valid_options.feature +12 -8
  48. data/features/dsl/mirror_rake_tasks/with_valid_options_and_cd.feature +6 -4
  49. data/features/dsl/mirror_rake_tasks/with_valid_options_and_cd_and_environment_variables.feature +6 -4
  50. data/features/dsl/mirror_rake_tasks/with_valid_options_and_environment_variables.feature +14 -10
  51. data/features/dsl/rake_executable.feature +1 -6
  52. data/features/step_definitions.rb +0 -12
  53. data/gemfiles/capistrano_v2.x.gemfile +7 -0
  54. data/gemfiles/capistrano_v2.x.gemfile.lock +66 -0
  55. data/gemfiles/rake_v0.9.3.gemfile +7 -0
  56. data/gemfiles/rake_v0.9.3.gemfile.lock +66 -0
  57. data/gemfiles/rake_v10.x.gemfile +7 -0
  58. data/gemfiles/rake_v10.x.gemfile.lock +66 -0
  59. data/lib/cape/capistrano.rb +39 -29
  60. data/lib/cape/version.rb +1 -1
  61. data/lib/cape/xterm.rb +1 -1
  62. data/spec/cape/capistrano_spec.rb +13 -3
  63. data/spec/cape/core_ext/hash_spec.rb +5 -5
  64. data/spec/cape/core_ext/symbol_spec.rb +10 -8
  65. data/spec/cape/deprecation/base_sharedspec.rb +6 -2
  66. data/spec/cape/deprecation/capistrano_deprecated_define_rake_wrapper_spec.rb +123 -101
  67. data/spec/cape/deprecation/dsl_deprecated_mirror_rake_tasks_spec.rb +119 -97
  68. data/spec/cape/dsl_deprecated_spec.rb +128 -134
  69. data/spec/cape/dsl_spec.rb +56 -63
  70. data/spec/cape/hash_list_spec.rb +40 -20
  71. data/spec/cape/rake_spec.rb +59 -51
  72. data/spec/cape/recipe_definition_spec.rb +44 -32
  73. data/spec/cape/util_spec.rb +18 -18
  74. data/spec/cape/version_spec.rb +1 -1
  75. data/spec/cape/xterm_spec.rb +33 -33
  76. data/spec/cape_spec.rb +9 -7
  77. data/spec/spec_helper.rb +5 -1
  78. metadata +100 -86
@@ -15,13 +15,15 @@ Feature: The #mirror_rake_tasks DSL method with valid options
15
15
  mirror_rake_tasks :roles => :app
16
16
  end
17
17
  """
18
- When I run `cap with_period`
18
+ When I run `cap long`
19
19
  Then the output should contain:
20
20
  """
21
21
  *** DEPRECATED: `mirror_rake_tasks :roles => :app`. Use this instead: `mirror_rake_tasks { |recipes| recipes.options[:roles] = :app }`
22
- * executing `with_period'
23
- * executing "cd /current/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period"
24
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
22
+ * executing `long'
23
+ """
24
+ And the output should contain:
25
+ """
26
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
25
27
  """
26
28
 
27
29
  Scenario: mirror a Rake task with its implementation
@@ -36,11 +38,13 @@ Feature: The #mirror_rake_tasks DSL method with valid options
36
38
  end
37
39
  end
38
40
  """
39
- When I run `cap with_period`
41
+ When I run `cap long`
40
42
  Then the output should contain:
41
43
  """
42
- * executing `with_period'
43
- * executing "cd /current/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period"
44
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
44
+ * executing `long'
45
+ """
46
+ And the output should contain:
47
+ """
48
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
45
49
  """
46
50
  And the output should not contain "DEPRECATED"
@@ -17,10 +17,12 @@ Feature: The #mirror_rake_tasks DSL method with valid options and a different di
17
17
  end
18
18
  end
19
19
  """
20
- When I run `cap with_period`
20
+ When I run `cap long`
21
21
  Then the output should contain:
22
22
  """
23
- * executing `with_period'
24
- * executing "cd /release/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period"
25
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
23
+ * executing `long'
24
+ """
25
+ And the output should contain:
26
+ """
27
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
26
28
  """
@@ -19,10 +19,12 @@ Feature: The #mirror_rake_tasks DSL method with valid options, a different direc
19
19
  end
20
20
  end
21
21
  """
22
- When I run `cap with_period`
22
+ When I run `cap long`
23
23
  Then the output should contain:
24
24
  """
25
- * executing `with_period'
26
- * executing "cd /release/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period RAILS_ENV=\"rails-env\""
27
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
25
+ * executing `long'
26
+ """
27
+ And the output should contain:
28
+ """
29
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
28
30
  """
@@ -5,7 +5,7 @@ Feature: The #mirror_rake_tasks DSL method with valid options and environment va
5
5
  I want to use the Cape DSL.
6
6
 
7
7
  @deprecated
8
- Scenario: mirror the matching Rake task with its implementation (deprecated)
8
+ Scenario: mirror a Rake task with its implementation (deprecated)
9
9
  Given a full-featured Rakefile
10
10
  And a Capfile with:
11
11
  """
@@ -18,16 +18,18 @@ Feature: The #mirror_rake_tasks DSL method with valid options and environment va
18
18
  end
19
19
  end
20
20
  """
21
- When I run `cap with_period`
21
+ When I run `cap long`
22
22
  Then the output should contain:
23
23
  """
24
24
  *** DEPRECATED: `mirror_rake_tasks(:roles => :app) { |env| env["RAILS_ENV"] = "rails-env" }`. Use this instead: `mirror_rake_tasks { |recipes| recipes.options[:roles] = :app; recipes.env["RAILS_ENV"] = "rails-env" }`
25
- * executing `with_period'
26
- * executing "cd /current/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period RAILS_ENV=\"rails-env\""
27
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
25
+ * executing `long'
26
+ """
27
+ And the output should contain:
28
+ """
29
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
28
30
  """
29
31
 
30
- Scenario: mirror the matching Rake task with its implementation
32
+ Scenario: mirror a Rake task with its implementation
31
33
  Given a full-featured Rakefile
32
34
  And a Capfile with:
33
35
  """
@@ -41,11 +43,13 @@ Feature: The #mirror_rake_tasks DSL method with valid options and environment va
41
43
  end
42
44
  end
43
45
  """
44
- When I run `cap with_period`
46
+ When I run `cap long`
45
47
  Then the output should contain:
46
48
  """
47
- * executing `with_period'
48
- * executing "cd /current/path && /usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake with_period RAILS_ENV=\"rails-env\""
49
- `with_period' is only run for servers matching {:roles=>:app}, but no servers matched
49
+ * executing `long'
50
+ """
51
+ And the output should contain:
52
+ """
53
+ `long' is only run for servers matching {:roles=>:app}, but no servers matched
50
54
  """
51
55
  And the output should not contain "DEPRECATED"
@@ -54,7 +54,7 @@ Feature: The #local_rake_executable and #remote_rake_executable DSL attributes
54
54
  mirror_rake_tasks
55
55
  end
56
56
  """
57
- When I run `cap with_period`
57
+ When I run `cap long`
58
58
  Then the output should contain:
59
59
  """
60
60
  We changed the remote Rake executable to "echo \"This comes from overridden Rake\" #"
@@ -63,8 +63,3 @@ Feature: The #local_rake_executable and #remote_rake_executable DSL attributes
63
63
  """
64
64
  We left the local Rake executable as "/usr/bin/env `/usr/bin/env bundle check >/dev/null 2>&1; case $? in 0|1 ) echo bundle exec ;; esac` rake"
65
65
  """
66
- And the output should contain:
67
- """
68
- * executing `with_period'
69
- * executing "cd /current/path && echo \"This comes from overridden Rake\" # with_period"
70
- """
@@ -9,12 +9,6 @@ end
9
9
 
10
10
  Given 'a full-featured Rakefile' do
11
11
  step 'a file named "Rakefile" with:', <<-end_step
12
- desc 'Ends with period.'
13
- task :with_period
14
-
15
- desc 'Ends without period'
16
- task :without_period
17
-
18
12
  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'
19
13
  task :long
20
14
 
@@ -49,12 +43,6 @@ Given 'a full-featured Rakefile defining a Ruby-method-shadowing task' do
49
43
  desc 'A task that shadows a Ruby method'
50
44
  task :load
51
45
 
52
- desc 'Ends with period.'
53
- task :with_period
54
-
55
- desc 'Ends without period'
56
- task :without_period
57
-
58
46
  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'
59
47
  task :long
60
48
 
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "capistrano", "~> 2"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,66 @@
1
+ PATH
2
+ remote: /Users/nils/Sources/personal/cape
3
+ specs:
4
+ cape (1.7.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ appraisal (0.5.2)
10
+ bundler
11
+ rake
12
+ aruba (0.5.3)
13
+ childprocess (>= 0.3.6)
14
+ cucumber (>= 1.1.1)
15
+ rspec-expectations (>= 2.7.0)
16
+ builder (3.2.2)
17
+ capistrano (2.15.5)
18
+ highline
19
+ net-scp (>= 1.0.0)
20
+ net-sftp (>= 2.0.0)
21
+ net-ssh (>= 2.0.14)
22
+ net-ssh-gateway (>= 1.1.0)
23
+ childprocess (0.3.9)
24
+ ffi (~> 1.0, >= 1.0.11)
25
+ cucumber (1.3.10)
26
+ builder (>= 2.1.2)
27
+ diff-lcs (>= 1.1.3)
28
+ gherkin (~> 2.12)
29
+ multi_json (>= 1.7.5, < 2.0)
30
+ multi_test (>= 0.0.2)
31
+ diff-lcs (1.2.5)
32
+ ffi (1.9.3)
33
+ gherkin (2.12.2)
34
+ multi_json (~> 1.3)
35
+ highline (1.6.20)
36
+ json_pure (1.8.1)
37
+ multi_json (1.8.2)
38
+ multi_test (0.0.2)
39
+ net-scp (1.1.2)
40
+ net-ssh (>= 2.6.5)
41
+ net-sftp (2.1.2)
42
+ net-ssh (>= 2.6.5)
43
+ net-ssh (2.7.0)
44
+ net-ssh-gateway (1.2.0)
45
+ net-ssh (>= 2.6.5)
46
+ rake (10.1.0)
47
+ rspec (2.14.1)
48
+ rspec-core (~> 2.14.0)
49
+ rspec-expectations (~> 2.14.0)
50
+ rspec-mocks (~> 2.14.0)
51
+ rspec-core (2.14.7)
52
+ rspec-expectations (2.14.4)
53
+ diff-lcs (>= 1.1.3, < 2.0)
54
+ rspec-mocks (2.14.4)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ appraisal (~> 0)
61
+ aruba (~> 0)
62
+ cape!
63
+ capistrano (~> 2)
64
+ json_pure
65
+ rake (>= 0.9.3)
66
+ rspec (~> 2)
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rake", "0.9.3"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,66 @@
1
+ PATH
2
+ remote: /Users/nils/Sources/personal/cape
3
+ specs:
4
+ cape (1.7.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ appraisal (0.5.2)
10
+ bundler
11
+ rake
12
+ aruba (0.5.3)
13
+ childprocess (>= 0.3.6)
14
+ cucumber (>= 1.1.1)
15
+ rspec-expectations (>= 2.7.0)
16
+ builder (3.2.2)
17
+ capistrano (2.15.5)
18
+ highline
19
+ net-scp (>= 1.0.0)
20
+ net-sftp (>= 2.0.0)
21
+ net-ssh (>= 2.0.14)
22
+ net-ssh-gateway (>= 1.1.0)
23
+ childprocess (0.3.9)
24
+ ffi (~> 1.0, >= 1.0.11)
25
+ cucumber (1.3.10)
26
+ builder (>= 2.1.2)
27
+ diff-lcs (>= 1.1.3)
28
+ gherkin (~> 2.12)
29
+ multi_json (>= 1.7.5, < 2.0)
30
+ multi_test (>= 0.0.2)
31
+ diff-lcs (1.2.5)
32
+ ffi (1.9.3)
33
+ gherkin (2.12.2)
34
+ multi_json (~> 1.3)
35
+ highline (1.6.20)
36
+ json_pure (1.8.1)
37
+ multi_json (1.8.2)
38
+ multi_test (0.0.2)
39
+ net-scp (1.1.2)
40
+ net-ssh (>= 2.6.5)
41
+ net-sftp (2.1.2)
42
+ net-ssh (>= 2.6.5)
43
+ net-ssh (2.7.0)
44
+ net-ssh-gateway (1.2.0)
45
+ net-ssh (>= 2.6.5)
46
+ rake (0.9.3)
47
+ rspec (2.14.1)
48
+ rspec-core (~> 2.14.0)
49
+ rspec-expectations (~> 2.14.0)
50
+ rspec-mocks (~> 2.14.0)
51
+ rspec-core (2.14.7)
52
+ rspec-expectations (2.14.4)
53
+ diff-lcs (>= 1.1.3, < 2.0)
54
+ rspec-mocks (2.14.4)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ appraisal (~> 0)
61
+ aruba (~> 0)
62
+ cape!
63
+ capistrano (~> 2)
64
+ json_pure
65
+ rake (= 0.9.3)
66
+ rspec (~> 2)
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rake", "~> 10"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,66 @@
1
+ PATH
2
+ remote: /Users/nils/Sources/personal/cape
3
+ specs:
4
+ cape (1.7.0)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ appraisal (0.5.2)
10
+ bundler
11
+ rake
12
+ aruba (0.5.3)
13
+ childprocess (>= 0.3.6)
14
+ cucumber (>= 1.1.1)
15
+ rspec-expectations (>= 2.7.0)
16
+ builder (3.2.2)
17
+ capistrano (2.15.5)
18
+ highline
19
+ net-scp (>= 1.0.0)
20
+ net-sftp (>= 2.0.0)
21
+ net-ssh (>= 2.0.14)
22
+ net-ssh-gateway (>= 1.1.0)
23
+ childprocess (0.3.9)
24
+ ffi (~> 1.0, >= 1.0.11)
25
+ cucumber (1.3.10)
26
+ builder (>= 2.1.2)
27
+ diff-lcs (>= 1.1.3)
28
+ gherkin (~> 2.12)
29
+ multi_json (>= 1.7.5, < 2.0)
30
+ multi_test (>= 0.0.2)
31
+ diff-lcs (1.2.5)
32
+ ffi (1.9.3)
33
+ gherkin (2.12.2)
34
+ multi_json (~> 1.3)
35
+ highline (1.6.20)
36
+ json_pure (1.8.1)
37
+ multi_json (1.8.2)
38
+ multi_test (0.0.2)
39
+ net-scp (1.1.2)
40
+ net-ssh (>= 2.6.5)
41
+ net-sftp (2.1.2)
42
+ net-ssh (>= 2.6.5)
43
+ net-ssh (2.7.0)
44
+ net-ssh-gateway (1.2.0)
45
+ net-ssh (>= 2.6.5)
46
+ rake (10.1.0)
47
+ rspec (2.14.1)
48
+ rspec-core (~> 2.14.0)
49
+ rspec-expectations (~> 2.14.0)
50
+ rspec-mocks (~> 2.14.0)
51
+ rspec-core (2.14.7)
52
+ rspec-expectations (2.14.4)
53
+ diff-lcs (>= 1.1.3, < 2.0)
54
+ rspec-mocks (2.14.4)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ appraisal (~> 0)
61
+ aruba (~> 0)
62
+ cape!
63
+ capistrano (~> 2)
64
+ json_pure
65
+ rake (~> 10)
66
+ rspec (~> 2)
@@ -1,6 +1,7 @@
1
1
  require 'cape/rake'
2
2
  require 'cape/recipe_definition'
3
3
  require 'cape/util'
4
+ require 'cape/xterm'
4
5
 
5
6
  module Cape
6
7
 
@@ -105,40 +106,49 @@ Set environment #{noun} #{parameters_list} if you want to pass #{noun_phrase}.
105
106
  if recipe_definition.rename
106
107
  recipe_name = recipe_definition.rename.call(name_tokens.last)
107
108
  end
108
- context.task recipe_name, recipe_definition.options do
109
- arguments = Array(task[:parameters]).collect do |a|
110
- if (value = ENV[a.upcase])
111
- value = value.inspect
109
+ begin
110
+ context.task recipe_name, recipe_definition.options do
111
+ arguments = Array(task[:parameters]).collect do |a|
112
+ if (value = ENV[a.upcase])
113
+ value = value.inspect
114
+ end
115
+ value
116
+ end
117
+ if arguments.empty?
118
+ arguments = nil
119
+ else
120
+ arguments = "[#{arguments.join ','}]"
112
121
  end
113
- value
114
- end
115
- if arguments.empty?
116
- arguments = nil
117
- else
118
- arguments = "[#{arguments.join ','}]"
119
- end
120
122
 
121
- unless env
122
- env_strings = recipe_definition.env.collect do |var_name, var_value|
123
- if var_name.nil? || var_value.nil?
124
- nil
125
- else
126
- if var_value.is_a?(Proc)
127
- var_value = context.instance_eval do
128
- var_value.call
123
+ unless env
124
+ env_strings = recipe_definition.env.collect do |var_name, var_value|
125
+ if var_name.nil? || var_value.nil?
126
+ nil
127
+ else
128
+ if var_value.is_a?(Proc)
129
+ var_value = context.instance_eval do
130
+ var_value.call
131
+ end
129
132
  end
133
+ "#{var_name}=#{var_value.inspect}"
130
134
  end
131
- "#{var_name}=#{var_value.inspect}"
132
- end
133
- end.compact
134
- env = env_strings.empty? ? nil : (' ' + env_strings.join(' '))
135
- end
135
+ end.compact
136
+ env = env_strings.empty? ? nil : (' ' + env_strings.join(' '))
137
+ end
136
138
 
137
- path = recipe_definition.cd || context.current_path
138
- path = path.call if path.respond_to?(:call)
139
- command = "cd #{path} && #{rake.remote_executable} " +
140
- "#{task[:name]}#{arguments}#{env}"
141
- context.run command
139
+ path = recipe_definition.cd || context.current_path
140
+ path = path.call if path.respond_to?(:call)
141
+ command = "cd #{path} && #{rake.remote_executable} " +
142
+ "#{task[:name]}#{arguments}#{env}"
143
+ context.run command
144
+ end
145
+ rescue => e
146
+ $stderr.puts XTerm.bold_and_foreground_red('*** WARNING:') +
147
+ ' ' +
148
+ XTerm.bold("You must use Cape's renaming API in order " +
149
+ 'to mirror Rake task ') +
150
+ XTerm.bold_and_underlined(task[:name]) +
151
+ XTerm.bold(" (#{e.message})")
142
152
  end
143
153
  }
144
154
  # Nest the recipe inside its containing namespaces.