engineyard-serverside 1.5.21 → 1.5.23.ruby19

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 (184) hide show
  1. data/lib/engineyard-serverside/cli.rb +39 -45
  2. data/lib/engineyard-serverside/configuration.rb +28 -4
  3. data/lib/engineyard-serverside/deploy.rb +5 -4
  4. data/lib/engineyard-serverside/logged_output.rb +3 -5
  5. data/lib/engineyard-serverside/server.rb +26 -2
  6. data/lib/engineyard-serverside/task.rb +2 -4
  7. data/lib/engineyard-serverside/version.rb +1 -1
  8. data/lib/engineyard-serverside.rb +8 -20
  9. data/spec/basic_deploy_spec.rb +1 -1
  10. data/spec/bundler_deploy_spec.rb +1 -1
  11. data/spec/nodejs_deploy_spec.rb +1 -1
  12. data/spec/rails31_deploy_spec.rb +1 -1
  13. data/spec/services_deploy_spec.rb +1 -1
  14. metadata +80 -233
  15. data/lib/vendor/dataflow/HISTORY +0 -52
  16. data/lib/vendor/dataflow/LICENSE +0 -19
  17. data/lib/vendor/dataflow/README.textile +0 -290
  18. data/lib/vendor/dataflow/Rakefile +0 -36
  19. data/lib/vendor/dataflow/dataflow/actor.rb +0 -22
  20. data/lib/vendor/dataflow/dataflow/equality.rb +0 -44
  21. data/lib/vendor/dataflow/dataflow/future_queue.rb +0 -24
  22. data/lib/vendor/dataflow/dataflow/port.rb +0 -54
  23. data/lib/vendor/dataflow/dataflow.rb +0 -124
  24. data/lib/vendor/dataflow/examples/barrier.rb +0 -9
  25. data/lib/vendor/dataflow/examples/data_driven.rb +0 -17
  26. data/lib/vendor/dataflow/examples/dataflow_http_gets.rb +0 -13
  27. data/lib/vendor/dataflow/examples/flow.rb +0 -20
  28. data/lib/vendor/dataflow/examples/future_http_gets.rb +0 -12
  29. data/lib/vendor/dataflow/examples/future_queue.rb +0 -11
  30. data/lib/vendor/dataflow/examples/instance_variables.rb +0 -15
  31. data/lib/vendor/dataflow/examples/laziness.rb +0 -9
  32. data/lib/vendor/dataflow/examples/local_variables.rb +0 -11
  33. data/lib/vendor/dataflow/examples/messages.rb +0 -26
  34. data/lib/vendor/dataflow/examples/port_http_gets.rb +0 -13
  35. data/lib/vendor/dataflow/examples/port_send.rb +0 -10
  36. data/lib/vendor/dataflow/examples/ring.rb +0 -21
  37. data/lib/vendor/dataflow/spec/actor_spec.rb +0 -28
  38. data/lib/vendor/dataflow/spec/anonymous_variables_spec.rb +0 -21
  39. data/lib/vendor/dataflow/spec/barrier_spec.rb +0 -25
  40. data/lib/vendor/dataflow/spec/by_need_spec.rb +0 -55
  41. data/lib/vendor/dataflow/spec/dataflow_spec.rb +0 -151
  42. data/lib/vendor/dataflow/spec/equality_spec.rb +0 -40
  43. data/lib/vendor/dataflow/spec/flow_spec.rb +0 -25
  44. data/lib/vendor/dataflow/spec/forker_spec.rb +0 -28
  45. data/lib/vendor/dataflow/spec/future_queue_spec.rb +0 -31
  46. data/lib/vendor/dataflow/spec/inspect_spec.rb +0 -19
  47. data/lib/vendor/dataflow/spec/need_later_spec.rb +0 -12
  48. data/lib/vendor/dataflow/spec/port_spec.rb +0 -26
  49. data/lib/vendor/dataflow/spec/spec.opts +0 -1
  50. data/lib/vendor/dataflow/spec/spec_helper.rb +0 -10
  51. data/lib/vendor/escape/Readme +0 -21
  52. data/lib/vendor/escape/doc_include/template/qualitysmith.rb +0 -631
  53. data/lib/vendor/json_pure/CHANGES +0 -166
  54. data/lib/vendor/json_pure/COPYING +0 -58
  55. data/lib/vendor/json_pure/GPL +0 -340
  56. data/lib/vendor/json_pure/README +0 -358
  57. data/lib/vendor/json_pure/Rakefile +0 -292
  58. data/lib/vendor/json_pure/TODO +0 -1
  59. data/lib/vendor/json_pure/VERSION +0 -1
  60. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +0 -52
  61. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +0 -1000
  62. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +0 -1001
  63. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +0 -900
  64. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +0 -901
  65. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +0 -1000
  66. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +0 -1001
  67. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +0 -261
  68. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +0 -1000
  69. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +0 -1001
  70. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +0 -1000
  71. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +0 -1001
  72. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +0 -1000
  73. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +0 -1001
  74. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +0 -262
  75. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +0 -1000
  76. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +0 -1001
  77. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +0 -82
  78. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +0 -34
  79. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +0 -900
  80. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +0 -901
  81. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +0 -81
  82. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +0 -1000
  83. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +0 -1001
  84. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +0 -82
  85. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +0 -1000
  86. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +0 -1001
  87. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +0 -82
  88. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +0 -1000
  89. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +0 -1001
  90. data/lib/vendor/json_pure/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +0 -82
  91. data/lib/vendor/json_pure/benchmarks/generator2_benchmark.rb +0 -222
  92. data/lib/vendor/json_pure/benchmarks/generator_benchmark.rb +0 -224
  93. data/lib/vendor/json_pure/benchmarks/ohai.json +0 -1216
  94. data/lib/vendor/json_pure/benchmarks/ohai.ruby +0 -1
  95. data/lib/vendor/json_pure/benchmarks/parser2_benchmark.rb +0 -251
  96. data/lib/vendor/json_pure/benchmarks/parser_benchmark.rb +0 -259
  97. data/lib/vendor/json_pure/bin/edit_json.rb +0 -9
  98. data/lib/vendor/json_pure/bin/prettify_json.rb +0 -75
  99. data/lib/vendor/json_pure/data/example.json +0 -1
  100. data/lib/vendor/json_pure/data/index.html +0 -38
  101. data/lib/vendor/json_pure/data/prototype.js +0 -4184
  102. data/lib/vendor/json_pure/ext/json/ext/generator/extconf.rb +0 -16
  103. data/lib/vendor/json_pure/ext/json/ext/generator/generator.c +0 -1323
  104. data/lib/vendor/json_pure/ext/json/ext/generator/generator.h +0 -170
  105. data/lib/vendor/json_pure/ext/json/ext/parser/extconf.rb +0 -15
  106. data/lib/vendor/json_pure/ext/json/ext/parser/parser.c +0 -1935
  107. data/lib/vendor/json_pure/ext/json/ext/parser/parser.h +0 -71
  108. data/lib/vendor/json_pure/ext/json/ext/parser/parser.rl +0 -792
  109. data/lib/vendor/json_pure/install.rb +0 -26
  110. data/lib/vendor/json_pure/tests/fixtures/fail1.json +0 -1
  111. data/lib/vendor/json_pure/tests/fixtures/fail10.json +0 -1
  112. data/lib/vendor/json_pure/tests/fixtures/fail11.json +0 -1
  113. data/lib/vendor/json_pure/tests/fixtures/fail12.json +0 -1
  114. data/lib/vendor/json_pure/tests/fixtures/fail13.json +0 -1
  115. data/lib/vendor/json_pure/tests/fixtures/fail14.json +0 -1
  116. data/lib/vendor/json_pure/tests/fixtures/fail18.json +0 -1
  117. data/lib/vendor/json_pure/tests/fixtures/fail19.json +0 -1
  118. data/lib/vendor/json_pure/tests/fixtures/fail2.json +0 -1
  119. data/lib/vendor/json_pure/tests/fixtures/fail20.json +0 -1
  120. data/lib/vendor/json_pure/tests/fixtures/fail21.json +0 -1
  121. data/lib/vendor/json_pure/tests/fixtures/fail22.json +0 -1
  122. data/lib/vendor/json_pure/tests/fixtures/fail23.json +0 -1
  123. data/lib/vendor/json_pure/tests/fixtures/fail24.json +0 -1
  124. data/lib/vendor/json_pure/tests/fixtures/fail25.json +0 -1
  125. data/lib/vendor/json_pure/tests/fixtures/fail27.json +0 -2
  126. data/lib/vendor/json_pure/tests/fixtures/fail28.json +0 -2
  127. data/lib/vendor/json_pure/tests/fixtures/fail3.json +0 -1
  128. data/lib/vendor/json_pure/tests/fixtures/fail4.json +0 -1
  129. data/lib/vendor/json_pure/tests/fixtures/fail5.json +0 -1
  130. data/lib/vendor/json_pure/tests/fixtures/fail6.json +0 -1
  131. data/lib/vendor/json_pure/tests/fixtures/fail7.json +0 -1
  132. data/lib/vendor/json_pure/tests/fixtures/fail8.json +0 -1
  133. data/lib/vendor/json_pure/tests/fixtures/fail9.json +0 -1
  134. data/lib/vendor/json_pure/tests/fixtures/pass1.json +0 -56
  135. data/lib/vendor/json_pure/tests/fixtures/pass15.json +0 -1
  136. data/lib/vendor/json_pure/tests/fixtures/pass16.json +0 -1
  137. data/lib/vendor/json_pure/tests/fixtures/pass17.json +0 -1
  138. data/lib/vendor/json_pure/tests/fixtures/pass2.json +0 -1
  139. data/lib/vendor/json_pure/tests/fixtures/pass26.json +0 -1
  140. data/lib/vendor/json_pure/tests/fixtures/pass3.json +0 -6
  141. data/lib/vendor/json_pure/tests/test_json.rb +0 -361
  142. data/lib/vendor/json_pure/tests/test_json_addition.rb +0 -162
  143. data/lib/vendor/json_pure/tests/test_json_encoding.rb +0 -68
  144. data/lib/vendor/json_pure/tests/test_json_fixtures.rb +0 -34
  145. data/lib/vendor/json_pure/tests/test_json_generate.rb +0 -122
  146. data/lib/vendor/json_pure/tests/test_json_rails.rb +0 -144
  147. data/lib/vendor/json_pure/tests/test_json_unicode.rb +0 -76
  148. data/lib/vendor/json_pure/tools/fuzz.rb +0 -139
  149. data/lib/vendor/json_pure/tools/server.rb +0 -61
  150. data/lib/vendor/open4/lib/open4.rb +0 -403
  151. data/lib/vendor/thor/CHANGELOG.rdoc +0 -89
  152. data/lib/vendor/thor/LICENSE +0 -20
  153. data/lib/vendor/thor/README.rdoc +0 -297
  154. data/lib/vendor/thor/Thorfile +0 -69
  155. data/lib/vendor/thor/bin/rake2thor +0 -86
  156. data/lib/vendor/thor/bin/thor +0 -6
  157. data/lib/vendor/thor/lib/thor/actions/create_file.rb +0 -103
  158. data/lib/vendor/thor/lib/thor/actions/directory.rb +0 -91
  159. data/lib/vendor/thor/lib/thor/actions/empty_directory.rb +0 -134
  160. data/lib/vendor/thor/lib/thor/actions/file_manipulation.rb +0 -223
  161. data/lib/vendor/thor/lib/thor/actions/inject_into_file.rb +0 -104
  162. data/lib/vendor/thor/lib/thor/actions.rb +0 -275
  163. data/lib/vendor/thor/lib/thor/base.rb +0 -540
  164. data/lib/vendor/thor/lib/thor/core_ext/file_binary_read.rb +0 -9
  165. data/lib/vendor/thor/lib/thor/core_ext/hash_with_indifferent_access.rb +0 -75
  166. data/lib/vendor/thor/lib/thor/core_ext/ordered_hash.rb +0 -100
  167. data/lib/vendor/thor/lib/thor/error.rb +0 -30
  168. data/lib/vendor/thor/lib/thor/group.rb +0 -271
  169. data/lib/vendor/thor/lib/thor/invocation.rb +0 -180
  170. data/lib/vendor/thor/lib/thor/parser/argument.rb +0 -67
  171. data/lib/vendor/thor/lib/thor/parser/arguments.rb +0 -150
  172. data/lib/vendor/thor/lib/thor/parser/option.rb +0 -128
  173. data/lib/vendor/thor/lib/thor/parser/options.rb +0 -169
  174. data/lib/vendor/thor/lib/thor/parser.rb +0 -4
  175. data/lib/vendor/thor/lib/thor/rake_compat.rb +0 -66
  176. data/lib/vendor/thor/lib/thor/runner.rb +0 -314
  177. data/lib/vendor/thor/lib/thor/shell/basic.rb +0 -239
  178. data/lib/vendor/thor/lib/thor/shell/color.rb +0 -108
  179. data/lib/vendor/thor/lib/thor/shell.rb +0 -83
  180. data/lib/vendor/thor/lib/thor/task.rb +0 -102
  181. data/lib/vendor/thor/lib/thor/util.rb +0 -230
  182. data/lib/vendor/thor/lib/thor/version.rb +0 -3
  183. data/lib/vendor/thor/lib/thor.rb +0 -244
  184. data/lib/vendor/thor/thor.gemspec +0 -120
@@ -1,275 +0,0 @@
1
- require 'fileutils'
2
- require 'thor/core_ext/file_binary_read'
3
-
4
- Dir[File.join(File.dirname(__FILE__), "actions", "*.rb")].each do |action|
5
- require action
6
- end
7
-
8
- class Thor
9
- module Actions
10
- attr_accessor :behavior
11
-
12
- def self.included(base) #:nodoc:
13
- base.extend ClassMethods
14
- end
15
-
16
- module ClassMethods
17
- # Hold source paths for one Thor instance. source_paths_for_search is the
18
- # method responsible to gather source_paths from this current class,
19
- # inherited paths and the source root.
20
- #
21
- def source_paths
22
- @source_paths ||= []
23
- end
24
-
25
- # Returns the source paths in the following order:
26
- #
27
- # 1) This class source paths
28
- # 2) Source root
29
- # 3) Parents source paths
30
- #
31
- def source_paths_for_search
32
- paths = []
33
- paths += self.source_paths
34
- paths << self.source_root if self.respond_to?(:source_root)
35
- paths += from_superclass(:source_paths, [])
36
- paths
37
- end
38
-
39
- # Add runtime options that help actions execution.
40
- #
41
- def add_runtime_options!
42
- class_option :force, :type => :boolean, :aliases => "-f", :group => :runtime,
43
- :desc => "Overwrite files that already exist"
44
-
45
- class_option :pretend, :type => :boolean, :aliases => "-p", :group => :runtime,
46
- :desc => "Run but do not make any changes"
47
-
48
- class_option :quiet, :type => :boolean, :aliases => "-q", :group => :runtime,
49
- :desc => "Supress status output"
50
-
51
- class_option :skip, :type => :boolean, :aliases => "-s", :group => :runtime,
52
- :desc => "Skip files that already exist"
53
- end
54
- end
55
-
56
- # Extends initializer to add more configuration options.
57
- #
58
- # ==== Configuration
59
- # behavior<Symbol>:: The actions default behavior. Can be :invoke or :revoke.
60
- # It also accepts :force, :skip and :pretend to set the behavior
61
- # and the respective option.
62
- #
63
- # destination_root<String>:: The root directory needed for some actions.
64
- #
65
- def initialize(args=[], options={}, config={})
66
- self.behavior = case config[:behavior].to_s
67
- when "force", "skip"
68
- _cleanup_options_and_set(options, config[:behavior])
69
- :invoke
70
- when "revoke"
71
- :revoke
72
- else
73
- :invoke
74
- end
75
-
76
- super
77
- self.destination_root = config[:destination_root]
78
- end
79
-
80
- # Wraps an action object and call it accordingly to the thor class behavior.
81
- #
82
- def action(instance) #:nodoc:
83
- if behavior == :revoke
84
- instance.revoke!
85
- else
86
- instance.invoke!
87
- end
88
- end
89
-
90
- # Returns the root for this thor class (also aliased as destination root).
91
- #
92
- def destination_root
93
- @destination_stack.last
94
- end
95
-
96
- # Sets the root for this thor class. Relatives path are added to the
97
- # directory where the script was invoked and expanded.
98
- #
99
- def destination_root=(root)
100
- @destination_stack ||= []
101
- @destination_stack[0] = File.expand_path(root || '')
102
- end
103
-
104
- # Returns the given path relative to the absolute root (ie, root where
105
- # the script started).
106
- #
107
- def relative_to_original_destination_root(path, remove_dot=true)
108
- path = path.gsub(@destination_stack[0], '.')
109
- remove_dot ? (path[2..-1] || '') : path
110
- end
111
-
112
- # Holds source paths in instance so they can be manipulated.
113
- #
114
- def source_paths
115
- @source_paths ||= self.class.source_paths_for_search
116
- end
117
-
118
- # Receives a file or directory and search for it in the source paths.
119
- #
120
- def find_in_source_paths(file)
121
- relative_root = relative_to_original_destination_root(destination_root, false)
122
-
123
- source_paths.each do |source|
124
- source_file = File.expand_path(file, File.join(source, relative_root))
125
- return source_file if File.exists?(source_file)
126
- end
127
-
128
- if source_paths.empty?
129
- raise Error, "You don't have any source path defined for class #{self.class.name}. To fix this, " <<
130
- "you can define a source_root in your class."
131
- else
132
- raise Error, "Could not find #{file.inspect} in source paths."
133
- end
134
- end
135
-
136
- # Do something in the root or on a provided subfolder. If a relative path
137
- # is given it's referenced from the current root. The full path is yielded
138
- # to the block you provide. The path is set back to the previous path when
139
- # the method exits.
140
- #
141
- # ==== Parameters
142
- # dir<String>:: the directory to move to.
143
- # config<Hash>:: give :verbose => true to log and use padding.
144
- #
145
- def inside(dir='', config={}, &block)
146
- verbose = config.fetch(:verbose, false)
147
-
148
- say_status :inside, dir, verbose
149
- shell.padding += 1 if verbose
150
- @destination_stack.push File.expand_path(dir, destination_root)
151
-
152
- FileUtils.mkdir_p(destination_root) unless File.exist?(destination_root)
153
- FileUtils.cd(destination_root) { block.arity == 1 ? yield(destination_root) : yield }
154
-
155
- @destination_stack.pop
156
- shell.padding -= 1 if verbose
157
- end
158
-
159
- # Goes to the root and execute the given block.
160
- #
161
- def in_root
162
- inside(@destination_stack.first) { yield }
163
- end
164
-
165
- # Loads an external file and execute it in the instance binding.
166
- #
167
- # ==== Parameters
168
- # path<String>:: The path to the file to execute. Can be a web address or
169
- # a relative path from the source root.
170
- #
171
- # ==== Examples
172
- #
173
- # apply "http://gist.github.com/103208"
174
- #
175
- # apply "recipes/jquery.rb"
176
- #
177
- def apply(path, config={})
178
- verbose = config.fetch(:verbose, true)
179
- path = find_in_source_paths(path) unless path =~ /^http\:\/\//
180
-
181
- say_status :apply, path, verbose
182
- shell.padding += 1 if verbose
183
- instance_eval(open(path).read)
184
- shell.padding -= 1 if verbose
185
- end
186
-
187
- # Executes a command returning the contents of the command.
188
- #
189
- # ==== Parameters
190
- # command<String>:: the command to be executed.
191
- # config<Hash>:: give :verbose => false to not log the status. Specify :with
192
- # to append an executable to command executation.
193
- #
194
- # ==== Example
195
- #
196
- # inside('vendor') do
197
- # run('ln -s ~/edge rails')
198
- # end
199
- #
200
- def run(command, config={})
201
- return unless behavior == :invoke
202
-
203
- destination = relative_to_original_destination_root(destination_root, false)
204
- desc = "#{command} from #{destination.inspect}"
205
-
206
- if config[:with]
207
- desc = "#{File.basename(config[:with].to_s)} #{desc}"
208
- command = "#{config[:with]} #{command}"
209
- end
210
-
211
- say_status :run, desc, config.fetch(:verbose, true)
212
- `#{command}` unless options[:pretend]
213
- end
214
-
215
- # Executes a ruby script (taking into account WIN32 platform quirks).
216
- #
217
- # ==== Parameters
218
- # command<String>:: the command to be executed.
219
- # config<Hash>:: give :verbose => false to not log the status.
220
- #
221
- def run_ruby_script(command, config={})
222
- return unless behavior == :invoke
223
- run command, config.merge(:with => Thor::Util.ruby_command)
224
- end
225
-
226
- # Run a thor command. A hash of options can be given and it's converted to
227
- # switches.
228
- #
229
- # ==== Parameters
230
- # task<String>:: the task to be invoked
231
- # args<Array>:: arguments to the task
232
- # config<Hash>:: give :verbose => false to not log the status. Other options
233
- # are given as parameter to Thor.
234
- #
235
- # ==== Examples
236
- #
237
- # thor :install, "http://gist.github.com/103208"
238
- # #=> thor install http://gist.github.com/103208
239
- #
240
- # thor :list, :all => true, :substring => 'rails'
241
- # #=> thor list --all --substring=rails
242
- #
243
- def thor(task, *args)
244
- config = args.last.is_a?(Hash) ? args.pop : {}
245
- verbose = config.key?(:verbose) ? config.delete(:verbose) : true
246
- pretend = config.key?(:pretend) ? config.delete(:pretend) : false
247
-
248
- args.unshift task
249
- args.push Thor::Options.to_switches(config)
250
- command = args.join(' ').strip
251
-
252
- run command, :with => :thor, :verbose => verbose, :pretend => pretend
253
- end
254
-
255
- protected
256
-
257
- # Allow current root to be shared between invocations.
258
- #
259
- def _shared_configuration #:nodoc:
260
- super.merge!(:destination_root => self.destination_root)
261
- end
262
-
263
- def _cleanup_options_and_set(options, key) #:nodoc:
264
- case options
265
- when Array
266
- %w(--force -f --skip -s).each { |i| options.delete(i) }
267
- options << "--#{key}"
268
- when Hash
269
- [:force, :skip, "force", "skip"].each { |i| options.delete(i) }
270
- options.merge!(key => true)
271
- end
272
- end
273
-
274
- end
275
- end