buildr 1.4.4 → 1.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +46 -0
- data/Rakefile +0 -1
- data/addon/buildr/bnd.rb +147 -0
- data/addon/buildr/jaxb_xjc.rb +72 -0
- data/addon/buildr/protobuf.rb +14 -1
- data/buildr.gemspec +6 -2
- data/doc/artifacts.textile +6 -0
- data/doc/contributing.textile +3 -0
- data/doc/download.textile +60 -0
- data/doc/index.textile +9 -15
- data/doc/installing.textile +23 -6
- data/doc/mailing_lists.textile +4 -0
- data/doc/more_stuff.textile +333 -6
- data/doc/packaging.textile +187 -1
- data/lib/buildr.rb +8 -1
- data/lib/buildr/clojure.rb +34 -0
- data/lib/buildr/clojure/shell.rb +52 -0
- data/lib/buildr/core.rb +3 -0
- data/lib/buildr/core/#application.rb# +700 -0
- data/lib/buildr/core/application.rb +18 -8
- data/lib/buildr/core/build.rb +2 -2
- data/lib/buildr/core/cc.rb +57 -63
- data/lib/buildr/core/checks.rb +4 -5
- data/lib/buildr/core/doc.rb +3 -1
- data/lib/buildr/core/generate.rb +2 -0
- data/lib/buildr/core/jrebel.rb +42 -0
- data/lib/buildr/core/linux.rb +30 -0
- data/lib/buildr/core/project.rb +9 -8
- data/lib/buildr/core/run.rb +3 -3
- data/lib/buildr/core/shell.rb +29 -90
- data/lib/buildr/core/test.rb +3 -3
- data/lib/buildr/core/transports.rb +5 -5
- data/lib/buildr/core/util.rb +2 -2
- data/lib/buildr/groovy.rb +1 -0
- data/lib/buildr/groovy/compiler.rb +12 -1
- data/lib/buildr/groovy/doc.rb +76 -0
- data/lib/buildr/groovy/shell.rb +24 -15
- data/lib/buildr/ide.rb +1 -1
- data/lib/buildr/ide/idea.rb +527 -141
- data/lib/buildr/java/bdd.rb +18 -13
- data/lib/buildr/java/ecj.rb +1 -3
- data/lib/buildr/java/jtestr_result.rb +295 -0
- data/lib/buildr/java/jtestr_runner.rb.erb +4 -6
- data/lib/buildr/java/packaging.rb +14 -3
- data/lib/buildr/java/pom.rb +6 -2
- data/lib/buildr/java/test_result.rb +15 -243
- data/lib/buildr/java/tests.rb +1 -1
- data/lib/buildr/packaging.rb +2 -1
- data/lib/buildr/packaging/#package.rb.rej# +19 -0
- data/lib/buildr/packaging/archive.rb +13 -3
- data/lib/buildr/packaging/artifact.rb +11 -12
- data/lib/buildr/packaging/tar.rb +4 -1
- data/lib/buildr/packaging/zip.rb +106 -1
- data/lib/buildr/resources/completed.png +0 -0
- data/lib/buildr/resources/failed.png +0 -0
- data/lib/buildr/resources/icons-license.txt +17 -0
- data/lib/buildr/run.rb +7 -14
- data/lib/buildr/scala/#Untitled-2# +7 -0
- data/lib/buildr/scala/bdd.rb +1 -1
- data/lib/buildr/scala/compiler.rb +1 -1
- data/lib/buildr/scala/doc.rb +20 -2
- data/lib/buildr/scala/shell.rb +14 -22
- data/lib/buildr/scala/tests.rb +2 -2
- data/lib/buildr/shell.rb +113 -108
- data/lib/buildr/version.rb +1 -1
- data/rakelib/checks.rake +9 -7
- data/rakelib/doc.rake +10 -0
- data/rakelib/release.rake +9 -0
- data/rakelib/rspec.rake +27 -28
- data/rakelib/setup.rake +1 -1
- data/rakelib/stage.rake +2 -2
- data/spec/addon/bnd_spec.rb +330 -0
- data/spec/addon/jaxb_xjc_spec.rb +125 -0
- data/spec/core/application_spec.rb +1 -1
- data/spec/core/build_spec.rb +7 -7
- data/spec/core/cc_spec.rb +154 -104
- data/spec/core/compile_spec.rb +3 -3
- data/spec/core/project_spec.rb +10 -0
- data/spec/core/run_spec.rb +1 -0
- data/spec/core/shell_spec.rb +146 -0
- data/spec/groovy/doc_spec.rb +65 -0
- data/spec/ide/eclipse_spec.rb +1 -1
- data/spec/ide/idea_spec.rb +1145 -0
- data/spec/java/bdd_spec.rb +3 -3
- data/spec/java/emma_spec.rb +2 -0
- data/spec/java/packaging_spec.rb +40 -11
- data/spec/java/test_coverage_helper.rb +1 -1
- data/spec/packaging/archive_spec.rb +76 -21
- data/spec/packaging/artifact_namespace_spec.rb +1 -1
- data/spec/packaging/artifact_spec.rb +14 -7
- data/spec/sandbox.rb +11 -4
- data/spec/scala/bdd_spec.rb +2 -2
- data/spec/scala/compiler_spec.rb +2 -2
- data/spec/scala/doc_spec.rb +24 -4
- data/spec/scala/scala.rb +2 -2
- data/spec/scala/tests_spec.rb +2 -2
- data/spec/spec_helpers.rb +9 -8
- data/spec/xpath_matchers.rb +121 -0
- metadata +248 -164
- data/lib/buildr/ide/idea.ipr.template +0 -300
- data/lib/buildr/ide/idea7x.ipr.template +0 -290
- data/lib/buildr/ide/idea7x.rb +0 -231
- data/spec/ide/idea7x_spec.rb +0 -96
@@ -391,13 +391,17 @@ module Buildr
|
|
391
391
|
|
392
392
|
# The display-name entry for application.xml
|
393
393
|
attr_accessor :display_name
|
394
|
+
# The description entry for application.xml
|
395
|
+
attr_accessor :description
|
394
396
|
# Map from component type to path inside the EAR.
|
395
397
|
attr_accessor :dirs
|
398
|
+
# Security roles entry for application.xml
|
399
|
+
attr_accessor :security_roles
|
396
400
|
|
397
401
|
def initialize(*args)
|
398
402
|
super
|
399
403
|
@dirs = Hash.new { |h, k| k.to_s }
|
400
|
-
@libs, @components = [], []
|
404
|
+
@libs, @components, @security_roles = [], [], []
|
401
405
|
prepare do
|
402
406
|
@components.each do |component|
|
403
407
|
path(component[:path]).include(component[:clone] || component[:artifact])
|
@@ -529,6 +533,8 @@ module Buildr
|
|
529
533
|
"http://java.sun.com/j2ee/dtds/application_1_2.dtd"
|
530
534
|
xml.application do
|
531
535
|
xml.tag! 'display-name', display_name
|
536
|
+
desc = self.description || @project.comment
|
537
|
+
xml.tag! 'description', desc if desc
|
532
538
|
@components.each do |comp|
|
533
539
|
basename = comp[:artifact].to_s.pathmap('%f')
|
534
540
|
uri = comp[:path].empty? ? basename : File.join(comp[:path], basename)
|
@@ -548,6 +554,12 @@ module Buildr
|
|
548
554
|
xml.jar uri
|
549
555
|
end
|
550
556
|
end
|
557
|
+
@security_roles.each do |role|
|
558
|
+
xml.tag! 'security-role', :id=>role[:id] do
|
559
|
+
xml.description role[:description]
|
560
|
+
xml.tag! 'role-name', role[:name]
|
561
|
+
end
|
562
|
+
end
|
551
563
|
end
|
552
564
|
buffer
|
553
565
|
end
|
@@ -702,13 +714,12 @@ module Buildr
|
|
702
714
|
end
|
703
715
|
|
704
716
|
def package_as_javadoc_spec(spec) #:nodoc:
|
705
|
-
spec.merge(:type=>:
|
717
|
+
spec.merge(:type=>:jar, :classifier=>'javadoc')
|
706
718
|
end
|
707
719
|
|
708
720
|
def package_as_javadoc(file_name) #:nodoc:
|
709
721
|
ZipTask.define_task(file_name).tap do |zip|
|
710
722
|
zip.include :from=>doc.target
|
711
|
-
doc.options[:windowtitle] ||= project.comment || project.name
|
712
723
|
end
|
713
724
|
end
|
714
725
|
|
data/lib/buildr/java/pom.rb
CHANGED
@@ -48,7 +48,11 @@ module Buildr
|
|
48
48
|
filename = File.expand_path(source)
|
49
49
|
unless pom = cache[filename]
|
50
50
|
trace "Loading m2 pom file from #{filename}"
|
51
|
-
|
51
|
+
begin
|
52
|
+
pom = POM.new(IO.read(filename))
|
53
|
+
rescue REXML::ParseException => e
|
54
|
+
fail "Could not parse #{filename}, #{e.continued_exception}"
|
55
|
+
end
|
52
56
|
cache[filename] = pom
|
53
57
|
end
|
54
58
|
pom
|
@@ -115,7 +119,7 @@ module Buildr
|
|
115
119
|
@properties ||= begin
|
116
120
|
pom = ["groupId", "artifactId", "version", "packaging"].inject({}) { |hash, key|
|
117
121
|
value = project[key] || (parent ? parent.project[key] : nil)
|
118
|
-
hash["pom.#{key}"] = hash["project.#{key}"] = value_of(value) if value
|
122
|
+
hash[key] = hash["pom.#{key}"] = hash["project.#{key}"] = value_of(value) if value
|
119
123
|
hash
|
120
124
|
}
|
121
125
|
props = project["properties"].first rescue {}
|
@@ -14,8 +14,10 @@
|
|
14
14
|
# the License.
|
15
15
|
|
16
16
|
# necessary to require YAML even if it is mentioned by autoload as it fails on some platforms.
|
17
|
-
require 'yaml'
|
17
|
+
require 'yaml'
|
18
18
|
require 'fileutils'
|
19
|
+
require 'rspec/core/formatters/base_formatter'
|
20
|
+
|
19
21
|
module Buildr #:nodoc:
|
20
22
|
module TestFramework
|
21
23
|
|
@@ -52,278 +54,48 @@ module Buildr #:nodoc:
|
|
52
54
|
end
|
53
55
|
|
54
56
|
# An Rspec formatter used by buildr
|
55
|
-
class YamlFormatter
|
57
|
+
class YamlFormatter < ::RSpec::Core::Formatters::BaseFormatter
|
56
58
|
attr_reader :result
|
57
59
|
|
58
|
-
|
59
|
-
|
60
|
-
def initialize(options, where)
|
61
|
-
@options = options
|
62
|
-
@where = where
|
60
|
+
def initialize(output)
|
61
|
+
super(output)
|
63
62
|
@result = Hash.new
|
64
63
|
@result[:succeeded] = []
|
65
64
|
@result[:failed] = []
|
66
65
|
end
|
67
66
|
|
68
|
-
%w[ example_started
|
69
|
-
start_dump dump_failure dump_summary dump_pending ].each do |meth|
|
70
|
-
module_eval "def #{meth}(*args); end"
|
71
|
-
end
|
72
|
-
|
73
|
-
def example_group_started(example_group)
|
74
|
-
@example_group = example_group
|
75
|
-
end
|
76
|
-
|
77
67
|
def example_passed(example)
|
68
|
+
super(example)
|
78
69
|
result.succeeded << example_name(example)
|
79
70
|
end
|
80
71
|
|
81
|
-
def example_pending(example
|
72
|
+
def example_pending(example)
|
73
|
+
super(example)
|
82
74
|
result.succeeded << example_name(example)
|
83
75
|
end
|
84
76
|
|
85
|
-
def example_failed(example
|
77
|
+
def example_failed(example)
|
78
|
+
super(example)
|
86
79
|
result.failed << example_name(example)
|
87
80
|
end
|
88
81
|
|
89
82
|
def start(example_count)
|
83
|
+
super(example_count)
|
90
84
|
@result = TestResult.new
|
91
85
|
end
|
92
86
|
|
93
87
|
def close
|
88
|
+
super
|
94
89
|
result.succeeded = result.succeeded - result.failed
|
95
|
-
|
96
|
-
File.open(where, 'w') { |f| f.puts YAML.dump(result) }
|
90
|
+
output.puts YAML.dump(result)
|
97
91
|
end
|
98
92
|
|
99
93
|
private
|
100
94
|
def example_name(example)
|
101
|
-
|
102
|
-
example_group.location.gsub(/:\d+$/, '')
|
103
|
-
else
|
104
|
-
example.name.gsub(/(.+)(\..+\(\))/, '\1')
|
105
|
-
end
|
95
|
+
example.file_path
|
106
96
|
end
|
107
97
|
end # YamlFormatter
|
108
98
|
|
109
|
-
# A JtestR ResultHandler
|
110
|
-
# Using this handler we can use RSpec formatters, like html/ci_reporter with JtestR
|
111
|
-
# Created for YamlFormatter
|
112
|
-
class RSpecResultHandler
|
113
|
-
|
114
|
-
# Workaround for http://jira.codehaus.org/browse/JTESTR-68
|
115
|
-
module TestNGResultHandlerMixin
|
116
|
-
def onTestSuccess(test_result)
|
117
|
-
@result_handler.succeed_single(test_result.name)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
class BacktraceTweaker
|
122
|
-
attr_reader :ignore_patterns
|
123
|
-
def initialize
|
124
|
-
@ignore_patterns = ::Spec::Runner::QuietBacktraceTweaker::IGNORE_PATTERNS.dup
|
125
|
-
# ignore jruby/jtestr backtrace
|
126
|
-
ignore_patterns << /org\.jruby\.javasupport\.JavaMethod\./
|
127
|
-
ignore_patterns << /jtestr.*\.jar!/i << /runner\.rb/
|
128
|
-
end
|
129
|
-
|
130
|
-
def clean_up_double_slashes(line)
|
131
|
-
line.gsub!('//','/')
|
132
|
-
end
|
133
|
-
|
134
|
-
def tweak_backtrace(error)
|
135
|
-
return if error.backtrace.nil?
|
136
|
-
error.backtrace.collect! do |line|
|
137
|
-
clean_up_double_slashes(line)
|
138
|
-
ignore_patterns.each do |ignore|
|
139
|
-
if line =~ ignore
|
140
|
-
line = nil
|
141
|
-
break
|
142
|
-
end
|
143
|
-
end
|
144
|
-
line
|
145
|
-
end
|
146
|
-
error.backtrace.compact!
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
class << self
|
151
|
-
# an rspec reporter used to proxy events to rspec formatters
|
152
|
-
attr_reader :reporter
|
153
|
-
attr_accessor :test_files
|
154
|
-
|
155
|
-
def init(argv = [], out = STDOUT, err = STDERR)
|
156
|
-
::JtestR::TestNGResultHandler.module_eval { include TestNGResultHandlerMixin }
|
157
|
-
rspec_parser = ::Spec::Runner::OptionParser.new(err, out)
|
158
|
-
rspec_parser.order!(argv)
|
159
|
-
rspec_parser.options.backtrace_tweaker = BacktraceTweaker.new
|
160
|
-
@reporter = Spec::Runner::Reporter.new(rspec_parser.options)
|
161
|
-
end
|
162
|
-
|
163
|
-
def before
|
164
|
-
reporter.start(reporter.options.files.size)
|
165
|
-
end
|
166
|
-
|
167
|
-
def after
|
168
|
-
reporter.end
|
169
|
-
reporter.dump
|
170
|
-
end
|
171
|
-
|
172
|
-
end
|
173
|
-
|
174
|
-
module ExampleMethods
|
175
|
-
attr_accessor :name, :description, :__full_description, :location
|
176
|
-
end
|
177
|
-
|
178
|
-
def reporter
|
179
|
-
self.class.reporter
|
180
|
-
end
|
181
|
-
|
182
|
-
attr_accessor :example_group, :current_example, :current_failure
|
183
|
-
|
184
|
-
def initialize(name, desc, *args)
|
185
|
-
self.example_group = ::Spec::Example::ExampleGroup.new(desc)
|
186
|
-
example_group.extend ExampleMethods
|
187
|
-
example_group.name = name.to_s
|
188
|
-
if example_group.name[/Spec/]
|
189
|
-
example_group.description = desc.to_s
|
190
|
-
else
|
191
|
-
example_group.description = name.to_s
|
192
|
-
end
|
193
|
-
reporter.example_group_started(example_group)
|
194
|
-
end
|
195
|
-
|
196
|
-
|
197
|
-
def starting
|
198
|
-
end
|
199
|
-
|
200
|
-
def ending
|
201
|
-
end
|
202
|
-
|
203
|
-
def add_fault(fault)
|
204
|
-
self.current_failure = fault
|
205
|
-
end
|
206
|
-
|
207
|
-
def add_pending(pending)
|
208
|
-
end
|
209
|
-
|
210
|
-
def starting_single(name = nil)
|
211
|
-
self.current_failure = nil
|
212
|
-
self.current_example = Object.new
|
213
|
-
current_example.extend ::Spec::Example::ExampleMethods
|
214
|
-
current_example.extend ExampleMethods
|
215
|
-
name = name.to_s
|
216
|
-
current_example.location = name.to_s
|
217
|
-
current_example.name = name.gsub(/(.*)\((.+)\)/, '\2')
|
218
|
-
current_example.description = name
|
219
|
-
if example_group.name[/Spec/]
|
220
|
-
current_example.__full_description = "#{example_group.description} #{name}"
|
221
|
-
else
|
222
|
-
current_example.__full_description = "#{example_group.name}: #{name}"
|
223
|
-
end
|
224
|
-
reporter.example_started(current_example)
|
225
|
-
end
|
226
|
-
|
227
|
-
def succeed_single(name = nil)
|
228
|
-
reporter.example_finished(current_example, nil)
|
229
|
-
end
|
230
|
-
|
231
|
-
def fail_single(name = nil)
|
232
|
-
current_example.name = current_name
|
233
|
-
reporter.example_finished(current_example, current_error)
|
234
|
-
end
|
235
|
-
|
236
|
-
def error_single(name = nil)
|
237
|
-
current_example.name = current_name
|
238
|
-
reporter.example_finished(current_example, current_error)
|
239
|
-
end
|
240
|
-
|
241
|
-
def pending_single(name = nil)
|
242
|
-
error = ::Spec::Example::ExamplePendingError.new(name)
|
243
|
-
reporter.example_finished(current_example, error)
|
244
|
-
end
|
245
|
-
|
246
|
-
private
|
247
|
-
def detect_file(trace)
|
248
|
-
# find first matching test file in stacktrace
|
249
|
-
file = nil
|
250
|
-
first_pos = nil
|
251
|
-
RSpecResultHandler.test_files.each do |f|
|
252
|
-
pos = trace.index(f)
|
253
|
-
if pos && (first_pos.nil? || pos < first_pos)
|
254
|
-
file = f
|
255
|
-
first_pos = pos
|
256
|
-
end
|
257
|
-
end
|
258
|
-
file || fail("RSpecResultHandler.detect_file failed: #{trace}")
|
259
|
-
end
|
260
|
-
|
261
|
-
def current_name(example = current_example, fault = current_failure)
|
262
|
-
return example.name unless fault
|
263
|
-
case fault
|
264
|
-
when Test::Unit::Error
|
265
|
-
detect_file(fault.long_display)
|
266
|
-
when Test::Unit::Failure
|
267
|
-
detect_file(fault.location.to_s)
|
268
|
-
when Spec::Runner::Reporter::Failure
|
269
|
-
detect_file(fault.exception.backtrace.to_s)
|
270
|
-
else
|
271
|
-
example.name
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
def current_error(fault = current_failure)
|
276
|
-
case fault
|
277
|
-
when nil
|
278
|
-
nil
|
279
|
-
when Test::Unit::Failure
|
280
|
-
Error.new(fault.message, fault.location)
|
281
|
-
when Test::Unit::Error
|
282
|
-
if fault.exception.is_a?(NativeException)
|
283
|
-
exception = fault.exception.cause
|
284
|
-
bt = exception.stack_trace.to_a
|
285
|
-
else
|
286
|
-
exception = fault.exception
|
287
|
-
bt = exception.backtrace
|
288
|
-
end
|
289
|
-
Error.new(exception.message, bt)
|
290
|
-
when Expectations::Results::Error
|
291
|
-
fault.exception
|
292
|
-
when Spec::Runner::Reporter::Failure
|
293
|
-
ex = fault.exception
|
294
|
-
Error.new(ex.message, ex.backtrace)
|
295
|
-
when Expectations::Results
|
296
|
-
file = fault.file
|
297
|
-
line = fault.line
|
298
|
-
Error.new(fault.message, ["#{fault.file}:#{fault.line}"])
|
299
|
-
else
|
300
|
-
if fault.respond_to?(:test_header)
|
301
|
-
fault.test_header[/\((.+)\)/]
|
302
|
-
test_cls, test_meth = $1.to_s, $`.to_s
|
303
|
-
exception = fault.exception
|
304
|
-
(class << exception; self; end).module_eval do
|
305
|
-
define_method(:backtrace) do
|
306
|
-
(["#{test_cls}:in `#{test_meth}'"] + stackTrace).map { |s| s.to_s }
|
307
|
-
end
|
308
|
-
end
|
309
|
-
exception
|
310
|
-
elsif fault.respond_to?(:method)
|
311
|
-
test_cls, test_meth = fault.method.test_class.name, fault.method.method_name
|
312
|
-
exception = fault.throwable
|
313
|
-
(class << exception; self; end).module_eval do
|
314
|
-
define_method(:backtrace) do
|
315
|
-
(["#{test_cls}:in `#{test_meth}'"] + stackTrace).map { |s| s.to_s }
|
316
|
-
end
|
317
|
-
end
|
318
|
-
exception
|
319
|
-
else
|
320
|
-
raise "Cannot handle fault #{fault.class}: #{fault.inspect}"
|
321
|
-
end
|
322
|
-
end
|
323
|
-
end
|
324
|
-
|
325
|
-
end # RSpecResultHandler
|
326
|
-
|
327
99
|
end # TestResult
|
328
100
|
end
|
329
101
|
end
|
data/lib/buildr/java/tests.rb
CHANGED
@@ -219,7 +219,7 @@ module Buildr
|
|
219
219
|
end
|
220
220
|
|
221
221
|
def tests(dependencies) #:nodoc:
|
222
|
-
if (self.class.version[0,1].to_i < 4)
|
222
|
+
if (self.class.version.to_s[0,1].to_i < 4)
|
223
223
|
filter_classes(dependencies, :interfaces => %w{junit.framework.TestCase})
|
224
224
|
else
|
225
225
|
filter_classes(dependencies,
|
data/lib/buildr/packaging.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
--- lib/buildr/packaging/package.rb
|
2
|
+
+++ lib/buildr/packaging/package.rb
|
3
|
+
@@ -183,12 +183,16 @@
|
4
|
+
pom_filename = Util.replace_extension(self.name, 'pom')
|
5
|
+
spec = {:group=>group, :id=>id, :version=>version, :type=>:pom} @pom = Buildr.artifact(spec, pom_filename)
|
6
|
+
+ @pom.dependencies = dependencies
|
7
|
+
@pom.content @pom.pom_xml
|
8
|
+
end
|
9
|
+
@pom
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
+ # package dependencies are compile dependencies iff not otherwise set
|
14
|
+
+ package.dependencies |= compile.dependencies
|
15
|
+
+
|
16
|
+
file(Buildr.repositories.locate(package)=>package) { package.install
|
17
|
+
|
18
|
+
# Add the package to the list of packages created by this project, an
|
19
|
+
|
@@ -113,7 +113,10 @@ module Buildr
|
|
113
113
|
expanders = files.collect do |file|
|
114
114
|
@sources << proc { file.to_s }
|
115
115
|
expander = ZipExpander.new(file)
|
116
|
-
@actions << proc
|
116
|
+
@actions << proc do |file_map|
|
117
|
+
file.invoke() if file.is_a?(Rake::Task)
|
118
|
+
expander.expand(file_map, path)
|
119
|
+
end
|
117
120
|
expander
|
118
121
|
end
|
119
122
|
Merge.new(expanders)
|
@@ -202,7 +205,6 @@ module Buildr
|
|
202
205
|
end
|
203
206
|
|
204
207
|
def include_as(source, as)
|
205
|
-
|
206
208
|
@sources << proc { source }
|
207
209
|
@actions << proc do |file_map|
|
208
210
|
file = source.to_s
|
@@ -467,7 +469,15 @@ module Buildr
|
|
467
469
|
def invoke_prerequisites(args, chain) #:nodoc:
|
468
470
|
@prepares.each { |prepare| prepare.call(self) }
|
469
471
|
@prepares.clear
|
470
|
-
|
472
|
+
|
473
|
+
file_map = {}
|
474
|
+
@paths.each do |name, path|
|
475
|
+
path.add_files(file_map)
|
476
|
+
end
|
477
|
+
|
478
|
+
# filter out Procs (dynamic content), nils and others
|
479
|
+
@prerequisites |= file_map.values.select { |src| src.is_a?(String) || src.is_a?(Rake::Task) }
|
480
|
+
|
471
481
|
super
|
472
482
|
end
|
473
483
|
|