cape 1.7.0 → 1.8.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 (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.