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/backtrace.rb
CHANGED
@@ -5,12 +5,12 @@ module Rake
|
|
5
5
|
[ File.join(File.dirname(__FILE__), "..") ]
|
6
6
|
|
7
7
|
SUPPRESSED_PATHS = SYS_PATHS.
|
8
|
-
map { |s| s.
|
8
|
+
map { |s| s.tr("\\", "/") }.
|
9
9
|
map { |f| File.expand_path(f) }.
|
10
10
|
reject { |s| s.nil? || s =~ /^ *$/ }
|
11
11
|
SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|")
|
12
12
|
SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if
|
13
|
-
Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE ==
|
13
|
+
Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby"
|
14
14
|
|
15
15
|
SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i
|
16
16
|
|
data/lib/rake/clean.rb
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
# The intent of this task is to return a project to its
|
12
12
|
# pristine, just unpacked state.
|
13
13
|
|
14
|
-
require
|
14
|
+
require "rake"
|
15
15
|
|
16
16
|
# :stopdoc:
|
17
17
|
|
@@ -29,6 +29,7 @@ module Rake
|
|
29
29
|
|
30
30
|
def cleanup(file_name, opts={})
|
31
31
|
begin
|
32
|
+
opts = {:verbose => Rake.application.options.trace}.merge(opts)
|
32
33
|
rm_r file_name, opts
|
33
34
|
rescue StandardError => ex
|
34
35
|
puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name)
|
@@ -60,7 +61,7 @@ end
|
|
60
61
|
|
61
62
|
CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]
|
62
63
|
CLEAN.clear_exclude.exclude { |fn|
|
63
|
-
fn.pathmap("%f").downcase ==
|
64
|
+
fn.pathmap("%f").downcase == "core" && File.directory?(fn)
|
64
65
|
}
|
65
66
|
|
66
67
|
desc "Remove any temporary products."
|
@@ -71,6 +72,6 @@ end
|
|
71
72
|
CLOBBER = ::Rake::FileList.new
|
72
73
|
|
73
74
|
desc "Remove any generated files."
|
74
|
-
task :
|
75
|
+
task clobber: [:clean] do
|
75
76
|
Rake::Cleaner.cleanup_files(CLOBBER)
|
76
77
|
end
|
data/lib/rake/cpu_counter.rb
CHANGED
data/lib/rake/dsl_definition.rb
CHANGED
data/lib/rake/ext/string.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "rake/ext/core"
|
2
2
|
|
3
3
|
class String
|
4
4
|
|
@@ -10,9 +10,9 @@ class String
|
|
10
10
|
# +ext+ is a user added method for the String class.
|
11
11
|
#
|
12
12
|
# This String extension comes from Rake
|
13
|
-
def ext(newext=
|
14
|
-
return self.dup if [
|
15
|
-
if newext !=
|
13
|
+
def ext(newext="")
|
14
|
+
return self.dup if [".", ".."].include? self
|
15
|
+
if newext != ""
|
16
16
|
newext = "." + newext unless newext =~ /^\./
|
17
17
|
end
|
18
18
|
self.chomp(File.extname(self)) << newext
|
@@ -26,8 +26,8 @@ class String
|
|
26
26
|
def pathmap_explode
|
27
27
|
head, tail = File.split(self)
|
28
28
|
return [self] if head == self
|
29
|
-
return [tail] if head ==
|
30
|
-
return [head, tail] if head ==
|
29
|
+
return [tail] if head == "." || tail == "/"
|
30
|
+
return [head, tail] if head == "/"
|
31
31
|
return head.pathmap_explode + [tail]
|
32
32
|
end
|
33
33
|
protected :pathmap_explode
|
@@ -57,15 +57,15 @@ class String
|
|
57
57
|
# This String extension comes from Rake
|
58
58
|
def pathmap_replace(patterns, &block)
|
59
59
|
result = self
|
60
|
-
patterns.split(
|
61
|
-
pattern, replacement = pair.split(
|
60
|
+
patterns.split(";").each do |pair|
|
61
|
+
pattern, replacement = pair.split(",")
|
62
62
|
pattern = Regexp.new(pattern)
|
63
|
-
if replacement ==
|
63
|
+
if replacement == "*" && block_given?
|
64
64
|
result = result.sub(pattern, &block)
|
65
65
|
elsif replacement
|
66
66
|
result = result.sub(pattern, replacement)
|
67
67
|
else
|
68
|
-
result = result.sub(pattern,
|
68
|
+
result = result.sub(pattern, "")
|
69
69
|
end
|
70
70
|
end
|
71
71
|
result
|
@@ -136,32 +136,32 @@ class String
|
|
136
136
|
# This String extension comes from Rake
|
137
137
|
def pathmap(spec=nil, &block)
|
138
138
|
return self if spec.nil?
|
139
|
-
result =
|
139
|
+
result = ""
|
140
140
|
spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag|
|
141
141
|
case frag
|
142
|
-
when
|
142
|
+
when "%f"
|
143
143
|
result << File.basename(self)
|
144
|
-
when
|
144
|
+
when "%n"
|
145
145
|
result << File.basename(self).ext
|
146
|
-
when
|
146
|
+
when "%d"
|
147
147
|
result << File.dirname(self)
|
148
|
-
when
|
148
|
+
when "%x"
|
149
149
|
result << File.extname(self)
|
150
|
-
when
|
150
|
+
when "%X"
|
151
151
|
result << self.ext
|
152
|
-
when
|
152
|
+
when "%p"
|
153
153
|
result << self
|
154
|
-
when
|
154
|
+
when "%s"
|
155
155
|
result << (File::ALT_SEPARATOR || File::SEPARATOR)
|
156
|
-
when
|
156
|
+
when "%-"
|
157
157
|
# do nothing
|
158
|
-
when
|
158
|
+
when "%%"
|
159
159
|
result << "%"
|
160
160
|
when /%(-?\d+)d/
|
161
161
|
result << pathmap_partial($1.to_i)
|
162
162
|
when /^%\{([^}]*)\}(\d*[dpfnxX])/
|
163
163
|
patterns, operator = $1, $2
|
164
|
-
result << pathmap(
|
164
|
+
result << pathmap("%" + operator).pathmap_replace(patterns, &block)
|
165
165
|
when /^%/
|
166
166
|
fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'"
|
167
167
|
else
|
data/lib/rake/file_list.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "rake/cloneable"
|
2
|
+
require "rake/file_utils_ext"
|
3
|
+
require "rake/ext/string"
|
4
4
|
|
5
5
|
module Rake
|
6
6
|
|
@@ -40,8 +40,7 @@ module Rake
|
|
40
40
|
|
41
41
|
# List of array methods (that are not in +Object+) that need to be
|
42
42
|
# delegated.
|
43
|
-
ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).
|
44
|
-
map { |n| n.to_s }
|
43
|
+
ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map(&:to_s)
|
45
44
|
|
46
45
|
# List of additional methods that must be delegated.
|
47
46
|
MUST_DEFINE = %w[inspect <=>]
|
@@ -58,8 +57,7 @@ module Rake
|
|
58
57
|
+ - & |
|
59
58
|
]
|
60
59
|
|
61
|
-
DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).
|
62
|
-
map { |s| s.to_s }.sort.uniq
|
60
|
+
DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).map(&:to_s).sort.uniq
|
63
61
|
|
64
62
|
# Now do the delegation.
|
65
63
|
DELEGATING_METHODS.each do |sym|
|
@@ -282,7 +280,7 @@ module Rake
|
|
282
280
|
# array.collect { |item| item.ext(newext) }
|
283
281
|
#
|
284
282
|
# +ext+ is a user added method for the Array class.
|
285
|
-
def ext(newext=
|
283
|
+
def ext(newext="")
|
286
284
|
collect { |fn| fn.ext(newext) }
|
287
285
|
end
|
288
286
|
|
@@ -344,7 +342,7 @@ module Rake
|
|
344
342
|
# Convert a FileList to a string by joining all elements with a space.
|
345
343
|
def to_s
|
346
344
|
resolve
|
347
|
-
self.join(
|
345
|
+
self.join(" ")
|
348
346
|
end
|
349
347
|
|
350
348
|
# Add matching glob patterns.
|
@@ -418,7 +416,7 @@ module Rake
|
|
418
416
|
# Yield each file or directory component.
|
419
417
|
def each_dir_parent(dir) # :nodoc:
|
420
418
|
old_length = nil
|
421
|
-
while dir !=
|
419
|
+
while dir != "." && dir.length != old_length
|
422
420
|
yield(dir)
|
423
421
|
old_length = dir.length
|
424
422
|
dir = File.dirname(dir)
|
data/lib/rake/file_task.rb
CHANGED
data/lib/rake/file_utils.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "rbconfig"
|
2
|
+
require "fileutils"
|
3
3
|
|
4
4
|
#--
|
5
5
|
# This a FileUtils extension that defines several additional commands to be
|
6
6
|
# added to the FileUtils utility functions.
|
7
7
|
module FileUtils
|
8
8
|
# Path to the currently running Ruby program
|
9
|
-
RUBY = ENV[
|
10
|
-
RbConfig::CONFIG[
|
11
|
-
RbConfig::CONFIG[
|
9
|
+
RUBY = ENV["RUBY"] || File.join(
|
10
|
+
RbConfig::CONFIG["bindir"],
|
11
|
+
RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]).
|
12
12
|
sub(/.*\s.*/m, '"\&"')
|
13
13
|
|
14
|
-
OPT_TABLE['sh'] = %w(noop verbose)
|
15
|
-
OPT_TABLE['ruby'] = %w(noop verbose)
|
16
|
-
|
17
14
|
# Run the system command +cmd+. If multiple arguments are given the command
|
18
15
|
# is run directly (without the shell, same semantics as Kernel::exec and
|
19
16
|
# Kernel::system).
|
@@ -132,8 +129,8 @@ module FileUtils
|
|
132
129
|
#
|
133
130
|
def split_all(path)
|
134
131
|
head, tail = File.split(path)
|
135
|
-
return [tail] if head ==
|
136
|
-
return [head, tail] if head ==
|
132
|
+
return [tail] if head == "." || tail == "/"
|
133
|
+
return [head, tail] if head == "/"
|
137
134
|
return split_all(head) + [tail]
|
138
135
|
end
|
139
136
|
end
|
data/lib/rake/file_utils_ext.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "rake/file_utils"
|
2
2
|
|
3
3
|
module Rake
|
4
4
|
#
|
@@ -22,10 +22,10 @@ module Rake
|
|
22
22
|
opts = FileUtils.options_of name
|
23
23
|
default_options = []
|
24
24
|
if opts.include?("verbose")
|
25
|
-
default_options <<
|
25
|
+
default_options << ":verbose => FileUtilsExt.verbose_flag"
|
26
26
|
end
|
27
27
|
if opts.include?("noop")
|
28
|
-
default_options <<
|
28
|
+
default_options << ":noop => FileUtilsExt.nowrite_flag"
|
29
29
|
end
|
30
30
|
|
31
31
|
next if default_options.empty?
|
data/lib/rake/late_time.rb
CHANGED
@@ -24,7 +24,7 @@ module Rake
|
|
24
24
|
lines = File.read fn
|
25
25
|
lines.gsub!(/\\ /, SPACE_MARK)
|
26
26
|
lines.gsub!(/#[^\n]*\n/m, "")
|
27
|
-
lines.gsub!(/\\\n/,
|
27
|
+
lines.gsub!(/\\\n/, " ")
|
28
28
|
lines.each_line do |line|
|
29
29
|
process_line(line)
|
30
30
|
end
|
@@ -34,7 +34,7 @@ module Rake
|
|
34
34
|
|
35
35
|
# Process one logical line of makefile data.
|
36
36
|
def process_line(line) # :nodoc:
|
37
|
-
file_tasks, args = line.split(
|
37
|
+
file_tasks, args = line.split(":", 2)
|
38
38
|
return if args.nil?
|
39
39
|
dependents = args.split.map { |d| respace(d) }
|
40
40
|
file_tasks.scan(/\S+/) do |file_task|
|
@@ -44,10 +44,10 @@ module Rake
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def respace(str) # :nodoc:
|
47
|
-
str.tr SPACE_MARK,
|
47
|
+
str.tr SPACE_MARK, " "
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
# Install the handler
|
52
|
-
Rake.application.add_loader(
|
52
|
+
Rake.application.add_loader("mf", MakefileLoader.new)
|
53
53
|
end
|
data/lib/rake/multi_task.rb
CHANGED
@@ -4,6 +4,42 @@ module Rake
|
|
4
4
|
# parallel using Ruby threads.
|
5
5
|
#
|
6
6
|
class MultiTask < Task
|
7
|
+
|
8
|
+
# Same as invoke, but explicitly pass a call chain to detect
|
9
|
+
# circular dependencies. This is largely copied from Rake::Task
|
10
|
+
# but has been updated such that if multiple tasks depend on this
|
11
|
+
# one in parallel, they will all fail if the first execution of
|
12
|
+
# this task fails.
|
13
|
+
def invoke_with_call_chain(task_args, invocation_chain)
|
14
|
+
new_chain = Rake::InvocationChain.append(self, invocation_chain)
|
15
|
+
@lock.synchronize do
|
16
|
+
begin
|
17
|
+
if @already_invoked
|
18
|
+
if @invocation_exception
|
19
|
+
if application.options.trace
|
20
|
+
application.trace "** Previous invocation of #{name} failed #{format_trace_flags}"
|
21
|
+
end
|
22
|
+
raise @invocation_exception
|
23
|
+
else
|
24
|
+
return
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if application.options.trace
|
29
|
+
application.trace "** Invoke #{name} #{format_trace_flags}"
|
30
|
+
end
|
31
|
+
@already_invoked = true
|
32
|
+
|
33
|
+
invoke_prerequisites(task_args, new_chain)
|
34
|
+
execute(task_args) if needed?
|
35
|
+
rescue Exception => ex
|
36
|
+
add_chain_to(ex, new_chain)
|
37
|
+
@invocation_exception = ex
|
38
|
+
raise
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
7
43
|
private
|
8
44
|
def invoke_prerequisites(task_args, invocation_chain) # :nodoc:
|
9
45
|
invoke_prerequisites_concurrently(task_args, invocation_chain)
|
data/lib/rake/name_space.rb
CHANGED
data/lib/rake/packagetask.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Define a package task library to aid in the definition of
|
2
2
|
# redistributable package files.
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
4
|
+
require "rake"
|
5
|
+
require "rake/tasklib"
|
6
6
|
|
7
7
|
module Rake
|
8
8
|
|
@@ -93,14 +93,14 @@ module Rake
|
|
93
93
|
@name = name
|
94
94
|
@version = version
|
95
95
|
@package_files = Rake::FileList.new
|
96
|
-
@package_dir =
|
96
|
+
@package_dir = "pkg"
|
97
97
|
@need_tar = false
|
98
98
|
@need_tar_gz = false
|
99
99
|
@need_tar_bz2 = false
|
100
100
|
@need_tar_xz = false
|
101
101
|
@need_zip = false
|
102
|
-
@tar_command =
|
103
|
-
@zip_command =
|
102
|
+
@tar_command = "tar"
|
103
|
+
@zip_command = "zip"
|
104
104
|
end
|
105
105
|
|
106
106
|
# Create the tasks defined by this task library.
|
@@ -112,23 +112,23 @@ module Rake
|
|
112
112
|
task :package
|
113
113
|
|
114
114
|
desc "Force a rebuild of the package files"
|
115
|
-
task :
|
115
|
+
task repackage: [:clobber_package, :package]
|
116
116
|
|
117
117
|
desc "Remove package products"
|
118
118
|
task :clobber_package do
|
119
119
|
rm_r package_dir rescue nil
|
120
120
|
end
|
121
121
|
|
122
|
-
task :
|
122
|
+
task clobber: [:clobber_package]
|
123
123
|
|
124
124
|
[
|
125
125
|
[need_tar, tgz_file, "z"],
|
126
126
|
[need_tar_gz, tar_gz_file, "z"],
|
127
127
|
[need_tar_bz2, tar_bz2_file, "j"],
|
128
128
|
[need_tar_xz, tar_xz_file, "J"]
|
129
|
-
].each do |
|
129
|
+
].each do |need, file, flag|
|
130
130
|
if need
|
131
|
-
task :
|
131
|
+
task package: ["#{package_dir}/#{file}"]
|
132
132
|
file "#{package_dir}/#{file}" =>
|
133
133
|
[package_dir_path] + package_files do
|
134
134
|
chdir(package_dir) do
|
@@ -139,7 +139,7 @@ module Rake
|
|
139
139
|
end
|
140
140
|
|
141
141
|
if need_zip
|
142
|
-
task :
|
142
|
+
task package: ["#{package_dir}/#{zip_file}"]
|
143
143
|
file "#{package_dir}/#{zip_file}" =>
|
144
144
|
[package_dir_path] + package_files do
|
145
145
|
chdir(package_dir) do
|