rake 11.3.0 → 12.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rake might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +51 -12
- data/.travis.yml +2 -9
- data/Gemfile +1 -1
- data/History.rdoc +41 -29
- data/README.rdoc +4 -5
- data/Rakefile +18 -13
- data/appveyor.yml +6 -7
- data/doc/rake.1 +139 -124
- data/doc/rakefile.rdoc +1 -3
- data/exe/rake +1 -1
- data/lib/rake.rb +33 -33
- data/lib/rake/application.rb +68 -67
- data/lib/rake/backtrace.rb +2 -2
- data/lib/rake/clean.rb +4 -3
- data/lib/rake/cpu_counter.rb +1 -1
- data/lib/rake/dsl_definition.rb +1 -1
- data/lib/rake/ext/string.rb +21 -21
- data/lib/rake/file_creation_task.rb +2 -2
- data/lib/rake/file_list.rb +8 -10
- data/lib/rake/file_task.rb +2 -2
- data/lib/rake/file_utils.rb +7 -10
- data/lib/rake/file_utils_ext.rb +3 -3
- data/lib/rake/late_time.rb +1 -1
- data/lib/rake/loaders/makefile.rb +4 -4
- data/lib/rake/multi_task.rb +36 -0
- data/lib/rake/name_space.rb +0 -1
- data/lib/rake/packagetask.rb +10 -10
- data/lib/rake/phony.rb +1 -1
- data/lib/rake/promise.rb +10 -10
- data/lib/rake/rake_module.rb +1 -1
- data/lib/rake/rake_test_loader.rb +1 -1
- data/lib/rake/rule_recursion_overflow_error.rb +1 -1
- data/lib/rake/scope.rb +1 -1
- data/lib/rake/task.rb +13 -14
- data/lib/rake/task_arguments.rb +8 -4
- data/lib/rake/task_manager.rb +5 -18
- data/lib/rake/tasklib.rb +1 -1
- data/lib/rake/testtask.rb +26 -16
- data/lib/rake/thread_history_display.rb +3 -3
- data/lib/rake/thread_pool.rb +14 -14
- data/lib/rake/version.rb +2 -2
- data/lib/rake/win32.rb +8 -8
- data/rake.gemspec +15 -6
- metadata +20 -68
- data/doc/release_notes/README.md +0 -4
- data/doc/release_notes/rake-0.4.14.rdoc +0 -23
- data/doc/release_notes/rake-0.4.15.rdoc +0 -35
- data/doc/release_notes/rake-0.5.0.rdoc +0 -53
- data/doc/release_notes/rake-0.5.3.rdoc +0 -78
- data/doc/release_notes/rake-0.5.4.rdoc +0 -46
- data/doc/release_notes/rake-0.6.0.rdoc +0 -141
- data/doc/release_notes/rake-0.7.0.rdoc +0 -119
- data/doc/release_notes/rake-0.7.1.rdoc +0 -59
- data/doc/release_notes/rake-0.7.2.rdoc +0 -121
- data/doc/release_notes/rake-0.7.3.rdoc +0 -47
- data/doc/release_notes/rake-0.8.0.rdoc +0 -114
- data/doc/release_notes/rake-0.8.2.rdoc +0 -165
- data/doc/release_notes/rake-0.8.3.rdoc +0 -112
- data/doc/release_notes/rake-0.8.4.rdoc +0 -147
- data/doc/release_notes/rake-0.8.5.rdoc +0 -53
- data/doc/release_notes/rake-0.8.6.rdoc +0 -37
- data/doc/release_notes/rake-0.8.7.rdoc +0 -55
- data/doc/release_notes/rake-0.9.0.rdoc +0 -112
- data/doc/release_notes/rake-0.9.1.rdoc +0 -52
- data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
- data/doc/release_notes/rake-0.9.2.rdoc +0 -49
- data/doc/release_notes/rake-0.9.3.rdoc +0 -102
- data/doc/release_notes/rake-0.9.4.rdoc +0 -60
- data/doc/release_notes/rake-0.9.5.rdoc +0 -55
- data/doc/release_notes/rake-0.9.6.rdoc +0 -64
- data/doc/release_notes/rake-10.0.0.rdoc +0 -178
- data/doc/release_notes/rake-10.0.1.rdoc +0 -58
- data/doc/release_notes/rake-10.0.2.rdoc +0 -53
- data/doc/release_notes/rake-10.0.3.rdoc +0 -191
- data/doc/release_notes/rake-10.1.0.rdoc +0 -61
- data/lib/rake/contrib/compositepublisher.rb +0 -21
- data/lib/rake/contrib/ftptools.rb +0 -137
- data/lib/rake/contrib/sshpublisher.rb +0 -60
- data/lib/rake/ext/pathname.rb +0 -25
data/lib/rake/promise.rb
CHANGED
@@ -27,11 +27,11 @@ module Rake
|
|
27
27
|
# synchronously. We will wait.
|
28
28
|
def value
|
29
29
|
unless complete?
|
30
|
-
stat :sleeping_on, :
|
30
|
+
stat :sleeping_on, item_id: object_id
|
31
31
|
@mutex.synchronize do
|
32
|
-
stat :has_lock_on, :
|
32
|
+
stat :has_lock_on, item_id: object_id
|
33
33
|
chore
|
34
|
-
stat :releasing_lock_on, :
|
34
|
+
stat :releasing_lock_on, item_id: object_id
|
35
35
|
end
|
36
36
|
end
|
37
37
|
error? ? raise(@error) : @result
|
@@ -39,14 +39,14 @@ module Rake
|
|
39
39
|
|
40
40
|
# If no one else is working this promise, go ahead and do the chore.
|
41
41
|
def work
|
42
|
-
stat :attempting_lock_on, :
|
42
|
+
stat :attempting_lock_on, item_id: object_id
|
43
43
|
if @mutex.try_lock
|
44
|
-
stat :has_lock_on, :
|
44
|
+
stat :has_lock_on, item_id: object_id
|
45
45
|
chore
|
46
|
-
stat :releasing_lock_on, :
|
46
|
+
stat :releasing_lock_on, item_id: object_id
|
47
47
|
@mutex.unlock
|
48
48
|
else
|
49
|
-
stat :bailed_on, :
|
49
|
+
stat :bailed_on, item_id: object_id
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -55,16 +55,16 @@ module Rake
|
|
55
55
|
# Perform the chore promised
|
56
56
|
def chore
|
57
57
|
if complete?
|
58
|
-
stat :found_completed, :
|
58
|
+
stat :found_completed, item_id: object_id
|
59
59
|
return
|
60
60
|
end
|
61
|
-
stat :will_execute, :
|
61
|
+
stat :will_execute, item_id: object_id
|
62
62
|
begin
|
63
63
|
@result = @block.call(*@args)
|
64
64
|
rescue Exception => e
|
65
65
|
@error = e
|
66
66
|
end
|
67
|
-
stat :did_execute, :
|
67
|
+
stat :did_execute, item_id: object_id
|
68
68
|
discard
|
69
69
|
end
|
70
70
|
|
data/lib/rake/rake_module.rb
CHANGED
data/lib/rake/scope.rb
CHANGED
data/lib/rake/task.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "rake/invocation_exception_mixin"
|
2
2
|
|
3
3
|
module Rake
|
4
4
|
|
@@ -141,11 +141,12 @@ module Rake
|
|
141
141
|
@already_invoked = false
|
142
142
|
end
|
143
143
|
|
144
|
-
# Clear the existing prerequisites and
|
144
|
+
# Clear the existing prerequisites, actions, comments, and arguments of a rake task.
|
145
145
|
def clear
|
146
146
|
clear_prerequisites
|
147
147
|
clear_actions
|
148
148
|
clear_comments
|
149
|
+
clear_args
|
149
150
|
self
|
150
151
|
end
|
151
152
|
|
@@ -167,6 +168,12 @@ module Rake
|
|
167
168
|
self
|
168
169
|
end
|
169
170
|
|
171
|
+
# Clear the existing arguments on a rake task.
|
172
|
+
def clear_args
|
173
|
+
@arg_names = nil
|
174
|
+
self
|
175
|
+
end
|
176
|
+
|
170
177
|
# Invoke the task if it is needed. Prerequisites are invoked first.
|
171
178
|
def invoke(*args)
|
172
179
|
task_args = TaskArguments.new(arg_names, args)
|
@@ -219,7 +226,7 @@ module Rake
|
|
219
226
|
r.invoke_with_call_chain(prereq_args, invocation_chain)
|
220
227
|
end
|
221
228
|
end
|
222
|
-
futures.each
|
229
|
+
futures.each(&:value)
|
223
230
|
end
|
224
231
|
|
225
232
|
# Format the trace flags for display.
|
@@ -240,14 +247,7 @@ module Rake
|
|
240
247
|
end
|
241
248
|
application.trace "** Execute #{name}" if application.options.trace
|
242
249
|
application.enhance_with_matching_rule(name) if @actions.empty?
|
243
|
-
@actions.each
|
244
|
-
case act.arity
|
245
|
-
when 1
|
246
|
-
act.call(self)
|
247
|
-
else
|
248
|
-
act.call(self, args)
|
249
|
-
end
|
250
|
-
end
|
250
|
+
@actions.each { |act| act.call(self, args) }
|
251
251
|
end
|
252
252
|
|
253
253
|
# Is this task needed?
|
@@ -314,7 +314,7 @@ module Rake
|
|
314
314
|
# Set the names of the arguments for this task. +args+ should be
|
315
315
|
# an array of symbols, one for each argument name.
|
316
316
|
def set_arg_names(args)
|
317
|
-
@arg_names = args.map
|
317
|
+
@arg_names = args.map(&:to_sym)
|
318
318
|
end
|
319
319
|
|
320
320
|
# Return a string describing the internal state of a task. Useful for
|
@@ -331,7 +331,7 @@ module Rake
|
|
331
331
|
prereqs.each do |p|
|
332
332
|
result << "--#{p.name} (#{p.timestamp})\n"
|
333
333
|
end
|
334
|
-
latest_prereq = prerequisite_tasks.map
|
334
|
+
latest_prereq = prerequisite_tasks.map(&:timestamp).max
|
335
335
|
result << "latest-prerequisite time: #{latest_prereq}\n"
|
336
336
|
result << "................................\n\n"
|
337
337
|
return result
|
@@ -382,7 +382,6 @@ module Rake
|
|
382
382
|
# this kind of task. Generic tasks will accept the scope as
|
383
383
|
# part of the name.
|
384
384
|
def scope_name(scope, task_name)
|
385
|
-
# (scope + [task_name]).join(':')
|
386
385
|
scope.path_with_task_name(task_name)
|
387
386
|
end
|
388
387
|
|
data/lib/rake/task_arguments.rb
CHANGED
@@ -17,7 +17,7 @@ module Rake
|
|
17
17
|
@hash = {}
|
18
18
|
@values = values
|
19
19
|
names.each_with_index { |name, i|
|
20
|
-
next if values[i].nil? || values[i] ==
|
20
|
+
next if values[i].nil? || values[i] == ""
|
21
21
|
@hash[name.to_sym] = values[i]
|
22
22
|
}
|
23
23
|
end
|
@@ -68,15 +68,19 @@ module Rake
|
|
68
68
|
|
69
69
|
# Returns a Hash of arguments and their values
|
70
70
|
def to_hash
|
71
|
-
@hash
|
71
|
+
@hash.dup
|
72
72
|
end
|
73
73
|
|
74
74
|
def to_s # :nodoc:
|
75
|
-
|
75
|
+
inspect
|
76
76
|
end
|
77
77
|
|
78
78
|
def inspect # :nodoc:
|
79
|
-
|
79
|
+
inspection = @hash.map do |k,v|
|
80
|
+
"#{k.to_s}: #{v.to_s}"
|
81
|
+
end.join(", ")
|
82
|
+
|
83
|
+
"#<#{self.class} #{inspection}>"
|
80
84
|
end
|
81
85
|
|
82
86
|
# Returns true if +key+ is one of the arguments
|
data/lib/rake/task_manager.rb
CHANGED
@@ -5,19 +5,6 @@ module Rake
|
|
5
5
|
# Track the last comment made in the Rakefile.
|
6
6
|
attr_accessor :last_description
|
7
7
|
|
8
|
-
# Remove Rake 12
|
9
|
-
def last_comment # :nodoc:
|
10
|
-
warn "[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead."
|
11
|
-
@last_description
|
12
|
-
end
|
13
|
-
|
14
|
-
# Remove Rake 12
|
15
|
-
def last_comment=(comment) # :nodoc:
|
16
|
-
warn "[DEPRECATION] `last_comment=` is deprecated. Please use `last_description=` instead."
|
17
|
-
@last_description = comment
|
18
|
-
@last_description # ignore warning
|
19
|
-
end
|
20
|
-
|
21
8
|
def initialize # :nodoc:
|
22
9
|
super
|
23
10
|
@tasks = Hash.new
|
@@ -28,7 +15,7 @@ module Rake
|
|
28
15
|
|
29
16
|
def create_rule(*args, &block) # :nodoc:
|
30
17
|
pattern, args, deps = resolve_args(args)
|
31
|
-
pattern = Regexp.new(Regexp.quote(pattern) +
|
18
|
+
pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern
|
32
19
|
@rules << [pattern, args, deps, block]
|
33
20
|
end
|
34
21
|
|
@@ -37,7 +24,7 @@ module Rake
|
|
37
24
|
|
38
25
|
original_scope = @scope
|
39
26
|
if String === task_name and
|
40
|
-
not task_class.ancestors.include? Rake::FileTask
|
27
|
+
not task_class.ancestors.include? Rake::FileTask
|
41
28
|
task_name, *definition_scope = *(task_name.split(":").reverse)
|
42
29
|
@scope = Scope.make(*(definition_scope + @scope.to_a))
|
43
30
|
end
|
@@ -180,10 +167,10 @@ module Rake
|
|
180
167
|
task_name = task_name.to_s
|
181
168
|
if task_name =~ /^rake:/
|
182
169
|
scopes = Scope.make
|
183
|
-
task_name = task_name.sub(/^rake:/,
|
170
|
+
task_name = task_name.sub(/^rake:/, "")
|
184
171
|
elsif task_name =~ /^(\^+)/
|
185
172
|
scopes = initial_scope.trim($1.size)
|
186
|
-
task_name = task_name.sub(/^(\^+)/,
|
173
|
+
task_name = task_name.sub(/^(\^+)/, "")
|
187
174
|
else
|
188
175
|
scopes = initial_scope
|
189
176
|
end
|
@@ -269,7 +256,7 @@ module Rake
|
|
269
256
|
return nil
|
270
257
|
end
|
271
258
|
}
|
272
|
-
task = FileTask.define_task(task_name, {args => prereqs}, &block)
|
259
|
+
task = FileTask.define_task(task_name, { args => prereqs }, &block)
|
273
260
|
task.sources = prereqs
|
274
261
|
task
|
275
262
|
end
|
data/lib/rake/tasklib.rb
CHANGED
data/lib/rake/testtask.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rake"
|
2
|
+
require "rake/tasklib"
|
3
3
|
|
4
4
|
module Rake
|
5
5
|
|
@@ -98,7 +98,7 @@ module Rake
|
|
98
98
|
@name = @name.keys.first
|
99
99
|
end
|
100
100
|
yield self if block_given?
|
101
|
-
@pattern =
|
101
|
+
@pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil?
|
102
102
|
define
|
103
103
|
end
|
104
104
|
|
@@ -107,6 +107,8 @@ module Rake
|
|
107
107
|
desc @description
|
108
108
|
task @name => Array(deps) do
|
109
109
|
FileUtilsExt.verbose(@verbose) do
|
110
|
+
puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \
|
111
|
+
", etc. to runners." if ARGV.include? "--verbose"
|
110
112
|
args =
|
111
113
|
"#{ruby_opts_string} #{run_code} " +
|
112
114
|
"#{file_list_string} #{option_list}"
|
@@ -114,8 +116,16 @@ module Rake
|
|
114
116
|
if !ok && status.respond_to?(:signaled?) && status.signaled?
|
115
117
|
raise SignalException.new(status.termsig)
|
116
118
|
elsif !ok
|
117
|
-
|
118
|
-
|
119
|
+
status = "Command failed with status (#{status.exitstatus})"
|
120
|
+
details = ": [ruby #{args}]"
|
121
|
+
message =
|
122
|
+
if Rake.application.options.trace or @verbose then
|
123
|
+
status + details
|
124
|
+
else
|
125
|
+
status
|
126
|
+
end
|
127
|
+
|
128
|
+
fail message
|
119
129
|
end
|
120
130
|
end
|
121
131
|
end
|
@@ -124,10 +134,10 @@ module Rake
|
|
124
134
|
end
|
125
135
|
|
126
136
|
def option_list # :nodoc:
|
127
|
-
(ENV[
|
128
|
-
ENV[
|
129
|
-
ENV[
|
130
|
-
ENV[
|
137
|
+
(ENV["TESTOPTS"] ||
|
138
|
+
ENV["TESTOPT"] ||
|
139
|
+
ENV["TEST_OPTS"] ||
|
140
|
+
ENV["TEST_OPT"] ||
|
131
141
|
@options ||
|
132
142
|
"")
|
133
143
|
end
|
@@ -144,16 +154,16 @@ module Rake
|
|
144
154
|
end
|
145
155
|
|
146
156
|
def file_list_string # :nodoc:
|
147
|
-
file_list.map { |fn| "\"#{fn}\"" }.join(
|
157
|
+
file_list.map { |fn| "\"#{fn}\"" }.join(" ")
|
148
158
|
end
|
149
159
|
|
150
160
|
def file_list # :nodoc:
|
151
|
-
if ENV[
|
152
|
-
FileList[ENV[
|
161
|
+
if ENV["TEST"]
|
162
|
+
FileList[ENV["TEST"]]
|
153
163
|
else
|
154
164
|
result = []
|
155
165
|
result += @test_files.to_a if @test_files
|
156
|
-
result
|
166
|
+
result += FileList[@pattern].to_a if @pattern
|
157
167
|
result
|
158
168
|
end
|
159
169
|
end
|
@@ -174,7 +184,7 @@ module Rake
|
|
174
184
|
end
|
175
185
|
|
176
186
|
def rake_loader # :nodoc:
|
177
|
-
find_file(
|
187
|
+
find_file("rake/rake_test_loader") or
|
178
188
|
fail "unable to find rake test loader"
|
179
189
|
end
|
180
190
|
|
@@ -187,7 +197,7 @@ module Rake
|
|
187
197
|
end
|
188
198
|
|
189
199
|
def rake_include_arg # :nodoc:
|
190
|
-
spec = Gem.loaded_specs[
|
200
|
+
spec = Gem.loaded_specs["rake"]
|
191
201
|
if spec.respond_to?(:default_gem?) && spec.default_gem?
|
192
202
|
""
|
193
203
|
else
|
@@ -196,7 +206,7 @@ module Rake
|
|
196
206
|
end
|
197
207
|
|
198
208
|
def rake_lib_dir # :nodoc:
|
199
|
-
find_dir(
|
209
|
+
find_dir("rake") or
|
200
210
|
fail "unable to find rake lib"
|
201
211
|
end
|
202
212
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "rake/private_reader"
|
2
2
|
|
3
3
|
module Rake
|
4
4
|
|
@@ -9,8 +9,8 @@ module Rake
|
|
9
9
|
|
10
10
|
def initialize(stats)
|
11
11
|
@stats = stats
|
12
|
-
@items = { :
|
13
|
-
@threads = { :
|
12
|
+
@items = { _seq_: 1 }
|
13
|
+
@threads = { _seq_: "A" }
|
14
14
|
end
|
15
15
|
|
16
16
|
def show
|
data/lib/rake/thread_pool.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
1
|
+
require "set"
|
2
2
|
|
3
|
-
require
|
3
|
+
require "rake/promise"
|
4
4
|
|
5
5
|
module Rake
|
6
6
|
|
@@ -34,7 +34,7 @@ module Rake
|
|
34
34
|
promise.recorder = lambda { |*stats| stat(*stats) }
|
35
35
|
|
36
36
|
@queue.enq promise
|
37
|
-
stat :queued, :
|
37
|
+
stat :queued, item_id: promise.object_id
|
38
38
|
start_thread
|
39
39
|
promise
|
40
40
|
end
|
@@ -82,8 +82,8 @@ module Rake
|
|
82
82
|
# Return a hash of always collected statistics for the thread pool.
|
83
83
|
def statistics # :nodoc:
|
84
84
|
{
|
85
|
-
:
|
86
|
-
:
|
85
|
+
total_threads_in_play: @total_threads_in_play,
|
86
|
+
max_active_threads: @max_active_threads,
|
87
87
|
}
|
88
88
|
end
|
89
89
|
|
@@ -99,11 +99,11 @@ module Rake
|
|
99
99
|
# is now gone. For this reason we pass true to Queue#deq
|
100
100
|
# because we will sleep indefinitely if it is empty.
|
101
101
|
promise = @queue.deq(true)
|
102
|
-
stat :dequeued, :
|
102
|
+
stat :dequeued, item_id: promise.object_id
|
103
103
|
promise.work
|
104
104
|
return true
|
105
105
|
|
106
|
-
|
106
|
+
rescue ThreadError # this means the queue is empty
|
107
107
|
false
|
108
108
|
end
|
109
109
|
|
@@ -125,7 +125,7 @@ module Rake
|
|
125
125
|
ensure
|
126
126
|
@threads_mon.synchronize do
|
127
127
|
@threads.delete Thread.current
|
128
|
-
stat :ended, :
|
128
|
+
stat :ended, thread_count: @threads.count
|
129
129
|
@join_cond.broadcast if @threads.empty?
|
130
130
|
end
|
131
131
|
end
|
@@ -134,8 +134,8 @@ module Rake
|
|
134
134
|
@threads << t
|
135
135
|
stat(
|
136
136
|
:spawned,
|
137
|
-
:
|
138
|
-
:
|
137
|
+
new_thread: t.object_id,
|
138
|
+
thread_count: @threads.count)
|
139
139
|
@total_threads_in_play = @threads.count if
|
140
140
|
@threads.count > @total_threads_in_play
|
141
141
|
end
|
@@ -144,10 +144,10 @@ module Rake
|
|
144
144
|
def stat(event, data=nil) # :nodoc:
|
145
145
|
return if @history_start_time.nil?
|
146
146
|
info = {
|
147
|
-
:
|
148
|
-
:
|
149
|
-
:
|
150
|
-
:
|
147
|
+
event: event,
|
148
|
+
data: data,
|
149
|
+
time: Time.now,
|
150
|
+
thread: Thread.current.object_id,
|
151
151
|
}
|
152
152
|
@history_mon.synchronize { @history << info }
|
153
153
|
end
|