rake 10.5.0 → 13.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/History.rdoc +2032 -288
- data/README.rdoc +40 -24
- data/doc/jamis.rb +1 -0
- data/doc/rake.1 +139 -124
- data/doc/rakefile.rdoc +2 -4
- data/{bin → exe}/rake +1 -7
- data/lib/rake/application.rb +164 -93
- data/lib/rake/backtrace.rb +4 -2
- data/lib/rake/clean.rb +7 -5
- data/lib/rake/cloneable.rb +1 -0
- data/lib/rake/cpu_counter.rb +10 -28
- data/lib/rake/default_loader.rb +1 -0
- data/lib/rake/dsl_definition.rb +8 -13
- data/lib/rake/early_time.rb +1 -0
- data/lib/rake/ext/core.rb +1 -0
- data/lib/rake/ext/string.rb +22 -21
- data/lib/rake/file_creation_task.rb +4 -3
- data/lib/rake/file_list.rb +34 -27
- data/lib/rake/file_task.rb +19 -7
- data/lib/rake/file_utils.rb +37 -33
- data/lib/rake/file_utils_ext.rb +8 -18
- data/lib/rake/invocation_chain.rb +1 -0
- data/lib/rake/invocation_exception_mixin.rb +1 -0
- data/lib/rake/late_time.rb +2 -1
- data/lib/rake/linked_list.rb +24 -15
- data/lib/rake/loaders/makefile.rb +5 -4
- data/lib/rake/multi_task.rb +2 -1
- data/lib/rake/name_space.rb +1 -1
- data/lib/rake/packagetask.rb +40 -17
- data/lib/rake/phony.rb +2 -1
- data/lib/rake/private_reader.rb +1 -0
- data/lib/rake/promise.rb +13 -12
- data/lib/rake/pseudo_status.rb +1 -0
- data/lib/rake/rake_module.rb +30 -1
- data/lib/rake/rake_test_loader.rb +9 -4
- data/lib/rake/rule_recursion_overflow_error.rb +2 -2
- data/lib/rake/scope.rb +3 -2
- data/lib/rake/task.rb +82 -31
- data/lib/rake/task_argument_error.rb +1 -0
- data/lib/rake/task_arguments.rb +15 -4
- data/lib/rake/task_manager.rb +56 -32
- data/lib/rake/tasklib.rb +2 -14
- data/lib/rake/testtask.rb +37 -61
- data/lib/rake/thread_history_display.rb +4 -3
- data/lib/rake/thread_pool.rb +16 -17
- data/lib/rake/trace_output.rb +2 -1
- data/lib/rake/version.rb +4 -1
- data/lib/rake/win32.rb +10 -15
- data/lib/rake.rb +34 -43
- data/rake.gemspec +101 -0
- metadata +24 -223
- data/.autotest +0 -7
- data/.rubocop.yml +0 -27
- data/.togglerc +0 -7
- data/CONTRIBUTING.rdoc +0 -38
- data/Manifest.txt +0 -166
- data/Rakefile +0 -81
- 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/alt_system.rb +0 -110
- data/lib/rake/contrib/.document +0 -1
- data/lib/rake/contrib/compositepublisher.rb +0 -21
- data/lib/rake/contrib/ftptools.rb +0 -137
- data/lib/rake/contrib/publisher.rb +0 -81
- data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
- data/lib/rake/contrib/sshpublisher.rb +0 -61
- data/lib/rake/contrib/sys.rb +0 -4
- data/lib/rake/ext/module.rb +0 -2
- data/lib/rake/ext/pathname.rb +0 -25
- data/lib/rake/ext/time.rb +0 -18
- data/lib/rake/gempackagetask.rb +0 -4
- data/lib/rake/pathmap.rb +0 -3
- data/lib/rake/rdoctask.rb +0 -4
- data/lib/rake/ruby182_test_unit_fix.rb +0 -29
- data/lib/rake/runtest.rb +0 -27
- data/rakelib/publish.rake +0 -20
- data/rakelib/test_times.rake +0 -25
- data/test/file_creation.rb +0 -34
- data/test/helper.rb +0 -129
- data/test/support/rakefile_definitions.rb +0 -478
- data/test/support/ruby_runner.rb +0 -34
- data/test/test_private_reader.rb +0 -42
- data/test/test_rake.rb +0 -40
- data/test/test_rake_application.rb +0 -643
- data/test/test_rake_application_options.rb +0 -468
- data/test/test_rake_backtrace.rb +0 -119
- data/test/test_rake_clean.rb +0 -61
- data/test/test_rake_cpu_counter.rb +0 -68
- data/test/test_rake_definitions.rb +0 -84
- data/test/test_rake_directory_task.rb +0 -76
- data/test/test_rake_dsl.rb +0 -40
- data/test/test_rake_early_time.rb +0 -31
- data/test/test_rake_extension.rb +0 -59
- data/test/test_rake_file_creation_task.rb +0 -56
- data/test/test_rake_file_list.rb +0 -670
- data/test/test_rake_file_list_path_map.rb +0 -8
- data/test/test_rake_file_task.rb +0 -197
- data/test/test_rake_file_utils.rb +0 -314
- data/test/test_rake_ftp_file.rb +0 -74
- data/test/test_rake_functional.rb +0 -482
- data/test/test_rake_invocation_chain.rb +0 -64
- data/test/test_rake_late_time.rb +0 -18
- data/test/test_rake_linked_list.rb +0 -84
- data/test/test_rake_makefile_loader.rb +0 -46
- data/test/test_rake_multi_task.rb +0 -64
- data/test/test_rake_name_space.rb +0 -57
- data/test/test_rake_package_task.rb +0 -79
- data/test/test_rake_path_map.rb +0 -168
- data/test/test_rake_path_map_explode.rb +0 -34
- data/test/test_rake_path_map_partial.rb +0 -18
- data/test/test_rake_pathname_extensions.rb +0 -15
- data/test/test_rake_pseudo_status.rb +0 -21
- data/test/test_rake_rake_test_loader.rb +0 -20
- data/test/test_rake_reduce_compat.rb +0 -26
- data/test/test_rake_require.rb +0 -40
- data/test/test_rake_rules.rb +0 -388
- data/test/test_rake_scope.rb +0 -44
- data/test/test_rake_task.rb +0 -393
- data/test/test_rake_task_argument_parsing.rb +0 -119
- data/test/test_rake_task_arguments.rb +0 -127
- data/test/test_rake_task_lib.rb +0 -9
- data/test/test_rake_task_manager.rb +0 -178
- data/test/test_rake_task_manager_argument_resolution.rb +0 -19
- data/test/test_rake_task_with_arguments.rb +0 -172
- data/test/test_rake_test_task.rb +0 -146
- data/test/test_rake_thread_pool.rb +0 -145
- data/test/test_rake_top_level_functions.rb +0 -71
- data/test/test_rake_win32.rb +0 -72
- data/test/test_thread_history_display.rb +0 -101
- data/test/test_trace_output.rb +0 -52
data/lib/rake/application.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require "optparse"
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
4
|
+
require "rake/task_manager"
|
5
|
+
require "rake/file_list"
|
6
|
+
require "rake/thread_pool"
|
7
|
+
require "rake/thread_history_display"
|
8
|
+
require "rake/trace_output"
|
9
|
+
require "rake/win32"
|
10
10
|
|
11
11
|
module Rake
|
12
12
|
|
@@ -35,17 +35,20 @@ module Rake
|
|
35
35
|
# List of the top level task names (task names from the command line).
|
36
36
|
attr_reader :top_level_tasks
|
37
37
|
|
38
|
+
# Override the detected TTY output state (mostly for testing)
|
39
|
+
attr_writer :tty_output
|
40
|
+
|
38
41
|
DEFAULT_RAKEFILES = [
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
42
|
+
"rakefile",
|
43
|
+
"Rakefile",
|
44
|
+
"rakefile.rb",
|
45
|
+
"Rakefile.rb"
|
43
46
|
].freeze
|
44
47
|
|
45
48
|
# Initialize a Rake::Application object.
|
46
49
|
def initialize
|
47
50
|
super
|
48
|
-
@name =
|
51
|
+
@name = "rake"
|
49
52
|
@rakefiles = DEFAULT_RAKEFILES.dup
|
50
53
|
@rakefile = nil
|
51
54
|
@pending_imports = []
|
@@ -54,11 +57,13 @@ module Rake
|
|
54
57
|
@default_loader = Rake::DefaultLoader.new
|
55
58
|
@original_dir = Dir.pwd
|
56
59
|
@top_level_tasks = []
|
57
|
-
add_loader(
|
58
|
-
add_loader(
|
59
|
-
add_loader(
|
60
|
+
add_loader("rb", DefaultLoader.new)
|
61
|
+
add_loader("rf", DefaultLoader.new)
|
62
|
+
add_loader("rake", DefaultLoader.new)
|
60
63
|
@tty_output = STDOUT.tty?
|
61
|
-
@terminal_columns = ENV[
|
64
|
+
@terminal_columns = ENV["RAKE_COLUMNS"].to_i
|
65
|
+
|
66
|
+
set_default_options
|
62
67
|
end
|
63
68
|
|
64
69
|
# Run the Rake application. The run method performs the following
|
@@ -71,23 +76,50 @@ module Rake
|
|
71
76
|
# If you wish to build a custom rake command, you should call
|
72
77
|
# +init+ on your application. Then define any tasks. Finally,
|
73
78
|
# call +top_level+ to run your top level tasks.
|
74
|
-
def run
|
79
|
+
def run(argv = ARGV)
|
75
80
|
standard_exception_handling do
|
76
|
-
init
|
81
|
+
init "rake", argv
|
77
82
|
load_rakefile
|
78
83
|
top_level
|
79
84
|
end
|
80
85
|
end
|
81
86
|
|
82
87
|
# Initialize the command line parameters and app name.
|
83
|
-
def init(app_name=
|
88
|
+
def init(app_name="rake", argv = ARGV)
|
84
89
|
standard_exception_handling do
|
85
90
|
@name = app_name
|
86
|
-
|
91
|
+
begin
|
92
|
+
args = handle_options argv
|
93
|
+
rescue ArgumentError
|
94
|
+
# Backward compatibility for capistrano
|
95
|
+
args = handle_options
|
96
|
+
end
|
97
|
+
load_debug_at_stop_feature
|
87
98
|
collect_command_line_tasks(args)
|
88
99
|
end
|
89
100
|
end
|
90
101
|
|
102
|
+
def load_debug_at_stop_feature
|
103
|
+
return unless ENV["RAKE_DEBUG"]
|
104
|
+
require "debug/session"
|
105
|
+
DEBUGGER__::start no_sigint_hook: true, nonstop: true
|
106
|
+
Rake::Task.prepend Module.new {
|
107
|
+
def execute(*)
|
108
|
+
exception = DEBUGGER__::SESSION.capture_exception_frames(/(exe|bin|lib)\/rake/) do
|
109
|
+
super
|
110
|
+
end
|
111
|
+
|
112
|
+
if exception
|
113
|
+
STDERR.puts exception.message
|
114
|
+
DEBUGGER__::SESSION.enter_postmortem_session exception
|
115
|
+
raise exception
|
116
|
+
end
|
117
|
+
end
|
118
|
+
}
|
119
|
+
rescue LoadError
|
120
|
+
end
|
121
|
+
private :load_debug_at_stop_feature
|
122
|
+
|
91
123
|
# Find the rakefile and then load it and any pending imports.
|
92
124
|
def load_rakefile
|
93
125
|
standard_exception_handling do
|
@@ -114,7 +146,7 @@ module Rake
|
|
114
146
|
|
115
147
|
yield
|
116
148
|
|
117
|
-
thread_pool.join
|
149
|
+
thread_pool.join if defined?(@thread_pool)
|
118
150
|
if options.job_stats
|
119
151
|
stats = thread_pool.statistics
|
120
152
|
puts "Maximum active threads: #{stats[:max_active_threads]} + main"
|
@@ -133,7 +165,13 @@ module Rake
|
|
133
165
|
|
134
166
|
# Application options from the command line
|
135
167
|
def options
|
136
|
-
@options ||=
|
168
|
+
@options ||= Struct.new(
|
169
|
+
:always_multitask, :backtrace, :build_all, :dryrun,
|
170
|
+
:ignore_deprecate, :ignore_system, :job_stats, :load_system,
|
171
|
+
:nosearch, :rakelib, :show_all_tasks, :show_prereqs,
|
172
|
+
:show_task_pattern, :show_tasks, :silent, :suppress_backtrace_pattern,
|
173
|
+
:thread_pool_size, :trace, :trace_output, :trace_rules
|
174
|
+
).new
|
137
175
|
end
|
138
176
|
|
139
177
|
# Return the thread pool used for multithreaded processing.
|
@@ -162,7 +200,7 @@ module Rake
|
|
162
200
|
args = []
|
163
201
|
|
164
202
|
begin
|
165
|
-
|
203
|
+
/\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
|
166
204
|
|
167
205
|
remaining_args = $2
|
168
206
|
args << $1.gsub(/\\(.)/, '\1')
|
@@ -202,13 +240,22 @@ module Rake
|
|
202
240
|
end
|
203
241
|
|
204
242
|
def display_exception_details(ex) # :nodoc:
|
205
|
-
|
206
|
-
return if seen.include? ex
|
207
|
-
seen << ex
|
243
|
+
display_exception_details_seen << ex
|
208
244
|
|
209
245
|
display_exception_message_details(ex)
|
210
|
-
display_exception_backtrace(ex)
|
211
|
-
|
246
|
+
display_exception_backtrace(ex) if ex.backtrace
|
247
|
+
display_cause_details(ex.cause) if has_cause?(ex)
|
248
|
+
end
|
249
|
+
|
250
|
+
def display_cause_details(ex) # :nodoc:
|
251
|
+
return if display_exception_details_seen.include? ex
|
252
|
+
|
253
|
+
trace "\nCaused by:"
|
254
|
+
display_exception_details(ex)
|
255
|
+
end
|
256
|
+
|
257
|
+
def display_exception_details_seen # :nodoc:
|
258
|
+
Thread.current[:rake_display_exception_details_seen] ||= []
|
212
259
|
end
|
213
260
|
|
214
261
|
def has_cause?(ex) # :nodoc:
|
@@ -218,6 +265,8 @@ module Rake
|
|
218
265
|
def display_exception_message_details(ex) # :nodoc:
|
219
266
|
if ex.instance_of?(RuntimeError)
|
220
267
|
trace ex.message
|
268
|
+
elsif ex.respond_to?(:detailed_message)
|
269
|
+
trace "#{ex.class.name}: #{ex.detailed_message(highlight: false)}"
|
221
270
|
else
|
222
271
|
trace "#{ex.class.name}: #{ex.message}"
|
223
272
|
end
|
@@ -257,7 +306,7 @@ module Rake
|
|
257
306
|
if File.exist?(fn)
|
258
307
|
others = FileList.glob(fn, File::FNM_CASEFOLD)
|
259
308
|
return others.size == 1 ? others.first : fn
|
260
|
-
elsif fn ==
|
309
|
+
elsif fn == ""
|
261
310
|
return fn
|
262
311
|
end
|
263
312
|
end
|
@@ -269,11 +318,6 @@ module Rake
|
|
269
318
|
@tty_output
|
270
319
|
end
|
271
320
|
|
272
|
-
# Override the detected TTY output state (mostly for testing)
|
273
|
-
def tty_output=(tty_output_state) # :nodoc:
|
274
|
-
@tty_output = tty_output_state
|
275
|
-
end
|
276
|
-
|
277
321
|
# We will truncate output if we are outputting to a TTY or if we've been
|
278
322
|
# given an explicit column width to honor
|
279
323
|
def truncate_output? # :nodoc:
|
@@ -345,7 +389,7 @@ module Rake
|
|
345
389
|
end
|
346
390
|
|
347
391
|
def unix? # :nodoc:
|
348
|
-
RbConfig::CONFIG[
|
392
|
+
RbConfig::CONFIG["host_os"] =~
|
349
393
|
/(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
|
350
394
|
end
|
351
395
|
|
@@ -378,7 +422,7 @@ module Rake
|
|
378
422
|
|
379
423
|
def sort_options(options) # :nodoc:
|
380
424
|
options.sort_by { |opt|
|
381
|
-
opt.select { |o| o =~ /^-/ }.map
|
425
|
+
opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
|
382
426
|
}
|
383
427
|
end
|
384
428
|
private :sort_options
|
@@ -388,38 +432,45 @@ module Rake
|
|
388
432
|
def standard_rake_options # :nodoc:
|
389
433
|
sort_options(
|
390
434
|
[
|
391
|
-
[
|
435
|
+
["--all", "-A",
|
392
436
|
"Show all tasks, even uncommented ones (in combination with -T or -D)",
|
393
437
|
lambda { |value|
|
394
438
|
options.show_all_tasks = value
|
395
439
|
}
|
396
440
|
],
|
397
|
-
[
|
441
|
+
["--backtrace=[OUT]",
|
398
442
|
"Enable full backtrace. OUT can be stderr (default) or stdout.",
|
399
443
|
lambda { |value|
|
400
444
|
options.backtrace = true
|
401
|
-
select_trace_output(options,
|
445
|
+
select_trace_output(options, "backtrace", value)
|
402
446
|
}
|
403
447
|
],
|
404
|
-
[
|
448
|
+
["--build-all", "-B",
|
405
449
|
"Build all prerequisites, including those which are up-to-date.",
|
406
450
|
lambda { |value|
|
407
451
|
options.build_all = true
|
408
452
|
}
|
409
453
|
],
|
410
|
-
[
|
454
|
+
["--comments",
|
411
455
|
"Show commented tasks only",
|
412
456
|
lambda { |value|
|
413
457
|
options.show_all_tasks = !value
|
414
458
|
}
|
415
459
|
],
|
416
|
-
[
|
460
|
+
["--describe", "-D [PATTERN]",
|
417
461
|
"Describe the tasks (matching optional PATTERN), then exit.",
|
418
462
|
lambda { |value|
|
419
463
|
select_tasks_to_show(options, :describe, value)
|
420
464
|
}
|
421
465
|
],
|
422
|
-
[
|
466
|
+
["--directory", "-C [DIRECTORY]",
|
467
|
+
"Change to DIRECTORY before doing anything.",
|
468
|
+
lambda { |value|
|
469
|
+
Dir.chdir value
|
470
|
+
@original_dir = Dir.pwd
|
471
|
+
}
|
472
|
+
],
|
473
|
+
["--dry-run", "-n",
|
423
474
|
"Do a dry run without executing actions.",
|
424
475
|
lambda { |value|
|
425
476
|
Rake.verbose(true)
|
@@ -428,31 +479,31 @@ module Rake
|
|
428
479
|
options.trace = true
|
429
480
|
}
|
430
481
|
],
|
431
|
-
[
|
482
|
+
["--execute", "-e CODE",
|
432
483
|
"Execute some Ruby code and exit.",
|
433
484
|
lambda { |value|
|
434
485
|
eval(value)
|
435
486
|
exit
|
436
487
|
}
|
437
488
|
],
|
438
|
-
[
|
489
|
+
["--execute-print", "-p CODE",
|
439
490
|
"Execute some Ruby code, print the result, then exit.",
|
440
491
|
lambda { |value|
|
441
492
|
puts eval(value)
|
442
493
|
exit
|
443
494
|
}
|
444
495
|
],
|
445
|
-
[
|
496
|
+
["--execute-continue", "-E CODE",
|
446
497
|
"Execute some Ruby code, " +
|
447
498
|
"then continue with normal task processing.",
|
448
499
|
lambda { |value| eval(value) }
|
449
500
|
],
|
450
|
-
[
|
501
|
+
["--jobs", "-j [NUMBER]",
|
451
502
|
"Specifies the maximum number of tasks to execute in parallel. " +
|
452
503
|
"(default is number of CPU cores + 4)",
|
453
504
|
lambda { |value|
|
454
|
-
if value.nil? || value ==
|
455
|
-
value =
|
505
|
+
if value.nil? || value == ""
|
506
|
+
value = Float::INFINITY
|
456
507
|
elsif value =~ /^\d+$/
|
457
508
|
value = value.to_i
|
458
509
|
else
|
@@ -462,7 +513,7 @@ module Rake
|
|
462
513
|
options.thread_pool_size = value - 1
|
463
514
|
}
|
464
515
|
],
|
465
|
-
[
|
516
|
+
["--job-stats [LEVEL]",
|
466
517
|
"Display job statistics. " +
|
467
518
|
"LEVEL=history displays a complete job list",
|
468
519
|
lambda { |value|
|
@@ -473,42 +524,42 @@ module Rake
|
|
473
524
|
end
|
474
525
|
}
|
475
526
|
],
|
476
|
-
[
|
527
|
+
["--libdir", "-I LIBDIR",
|
477
528
|
"Include LIBDIR in the search path for required modules.",
|
478
529
|
lambda { |value| $:.push(value) }
|
479
530
|
],
|
480
|
-
[
|
531
|
+
["--multitask", "-m",
|
481
532
|
"Treat all tasks as multitasks.",
|
482
533
|
lambda { |value| options.always_multitask = true }
|
483
534
|
],
|
484
|
-
[
|
485
|
-
|
535
|
+
["--no-search", "--nosearch",
|
536
|
+
"-N", "Do not search parent directories for the Rakefile.",
|
486
537
|
lambda { |value| options.nosearch = true }
|
487
538
|
],
|
488
|
-
[
|
539
|
+
["--prereqs", "-P",
|
489
540
|
"Display the tasks and dependencies, then exit.",
|
490
541
|
lambda { |value| options.show_prereqs = true }
|
491
542
|
],
|
492
|
-
[
|
543
|
+
["--quiet", "-q",
|
493
544
|
"Do not log messages to standard output.",
|
494
545
|
lambda { |value| Rake.verbose(false) }
|
495
546
|
],
|
496
|
-
[
|
547
|
+
["--rakefile", "-f [FILENAME]",
|
497
548
|
"Use FILENAME as the rakefile to search for.",
|
498
549
|
lambda { |value|
|
499
|
-
value ||=
|
550
|
+
value ||= ""
|
500
551
|
@rakefiles.clear
|
501
552
|
@rakefiles << value
|
502
553
|
}
|
503
554
|
],
|
504
|
-
[
|
555
|
+
["--rakelibdir", "--rakelib", "-R RAKELIBDIR",
|
505
556
|
"Auto-import any .rake files in RAKELIBDIR. " +
|
506
557
|
"(default is 'rakelib')",
|
507
558
|
lambda { |value|
|
508
559
|
options.rakelib = value.split(File::PATH_SEPARATOR)
|
509
560
|
}
|
510
561
|
],
|
511
|
-
[
|
562
|
+
["--require", "-r MODULE",
|
512
563
|
"Require MODULE before executing rakefile.",
|
513
564
|
lambda { |value|
|
514
565
|
begin
|
@@ -522,11 +573,11 @@ module Rake
|
|
522
573
|
end
|
523
574
|
}
|
524
575
|
],
|
525
|
-
[
|
576
|
+
["--rules",
|
526
577
|
"Trace the rules resolution.",
|
527
578
|
lambda { |value| options.trace_rules = true }
|
528
579
|
],
|
529
|
-
[
|
580
|
+
["--silent", "-s",
|
530
581
|
"Like --quiet, but also suppresses the " +
|
531
582
|
"'in directory' announcement.",
|
532
583
|
lambda { |value|
|
@@ -534,59 +585,60 @@ module Rake
|
|
534
585
|
options.silent = true
|
535
586
|
}
|
536
587
|
],
|
537
|
-
[
|
588
|
+
["--suppress-backtrace PATTERN",
|
538
589
|
"Suppress backtrace lines matching regexp PATTERN. " +
|
539
590
|
"Ignored if --trace is on.",
|
540
591
|
lambda { |value|
|
541
592
|
options.suppress_backtrace_pattern = Regexp.new(value)
|
542
593
|
}
|
543
594
|
],
|
544
|
-
[
|
595
|
+
["--system", "-g",
|
545
596
|
"Using system wide (global) rakefiles " +
|
546
597
|
"(usually '~/.rake/*.rake').",
|
547
598
|
lambda { |value| options.load_system = true }
|
548
599
|
],
|
549
|
-
[
|
600
|
+
["--no-system", "--nosystem", "-G",
|
550
601
|
"Use standard project Rakefile search paths, " +
|
551
602
|
"ignore system wide rakefiles.",
|
552
603
|
lambda { |value| options.ignore_system = true }
|
553
604
|
],
|
554
|
-
[
|
605
|
+
["--tasks", "-T [PATTERN]",
|
555
606
|
"Display the tasks (matching optional PATTERN) " +
|
556
|
-
"with descriptions, then exit."
|
607
|
+
"with descriptions, then exit. " +
|
608
|
+
"-AT combination displays all the tasks, including those without descriptions.",
|
557
609
|
lambda { |value|
|
558
610
|
select_tasks_to_show(options, :tasks, value)
|
559
611
|
}
|
560
612
|
],
|
561
|
-
[
|
613
|
+
["--trace=[OUT]", "-t",
|
562
614
|
"Turn on invoke/execute tracing, enable full backtrace. " +
|
563
615
|
"OUT can be stderr (default) or stdout.",
|
564
616
|
lambda { |value|
|
565
617
|
options.trace = true
|
566
618
|
options.backtrace = true
|
567
|
-
select_trace_output(options,
|
619
|
+
select_trace_output(options, "trace", value)
|
568
620
|
Rake.verbose(true)
|
569
621
|
}
|
570
622
|
],
|
571
|
-
[
|
623
|
+
["--verbose", "-v",
|
572
624
|
"Log message to standard output.",
|
573
625
|
lambda { |value| Rake.verbose(true) }
|
574
626
|
],
|
575
|
-
[
|
627
|
+
["--version", "-V",
|
576
628
|
"Display the program version.",
|
577
629
|
lambda { |value|
|
578
|
-
puts "rake, version #{
|
630
|
+
puts "rake, version #{Rake::VERSION}"
|
579
631
|
exit
|
580
632
|
}
|
581
633
|
],
|
582
|
-
[
|
634
|
+
["--where", "-W [PATTERN]",
|
583
635
|
"Describe the tasks (matching optional PATTERN), then exit.",
|
584
636
|
lambda { |value|
|
585
637
|
select_tasks_to_show(options, :lines, value)
|
586
638
|
options.show_all_tasks = true
|
587
639
|
}
|
588
640
|
],
|
589
|
-
[
|
641
|
+
["--no-deprecation-warnings", "-X",
|
590
642
|
"Disable the deprecation warnings.",
|
591
643
|
lambda { |value|
|
592
644
|
options.ignore_deprecate = true
|
@@ -597,7 +649,7 @@ module Rake
|
|
597
649
|
|
598
650
|
def select_tasks_to_show(options, show_tasks, value) # :nodoc:
|
599
651
|
options.show_tasks = show_tasks
|
600
|
-
options.show_task_pattern = Regexp.new(value ||
|
652
|
+
options.show_task_pattern = Regexp.new(value || "")
|
601
653
|
Rake::TaskManager.record_task_metadata = true
|
602
654
|
end
|
603
655
|
private :select_tasks_to_show
|
@@ -605,9 +657,9 @@ module Rake
|
|
605
657
|
def select_trace_output(options, trace_option, value) # :nodoc:
|
606
658
|
value = value.strip unless value.nil?
|
607
659
|
case value
|
608
|
-
when
|
660
|
+
when "stdout"
|
609
661
|
options.trace_output = $stdout
|
610
|
-
when
|
662
|
+
when "stderr", nil
|
611
663
|
options.trace_output = $stderr
|
612
664
|
else
|
613
665
|
fail CommandLineOptionError,
|
@@ -619,9 +671,8 @@ module Rake
|
|
619
671
|
# Read and handle the command line options. Returns the command line
|
620
672
|
# arguments that we didn't understand, which should (in theory) be just
|
621
673
|
# task names and env vars.
|
622
|
-
def handle_options # :nodoc:
|
623
|
-
|
624
|
-
options.trace_output = $stderr
|
674
|
+
def handle_options(argv) # :nodoc:
|
675
|
+
set_default_options
|
625
676
|
|
626
677
|
OptionParser.new do |opts|
|
627
678
|
opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
|
@@ -634,8 +685,8 @@ module Rake
|
|
634
685
|
end
|
635
686
|
|
636
687
|
standard_rake_options.each { |args| opts.on(*args) }
|
637
|
-
opts.environment(
|
638
|
-
end.parse(
|
688
|
+
opts.environment("RAKEOPT")
|
689
|
+
end.parse(argv)
|
639
690
|
end
|
640
691
|
|
641
692
|
# Similar to the regular Ruby +require+ command, but will check
|
@@ -673,7 +724,7 @@ module Rake
|
|
673
724
|
|
674
725
|
def raw_load_rakefile # :nodoc:
|
675
726
|
rakefile, location = find_rakefile_location
|
676
|
-
if (!
|
727
|
+
if (!options.ignore_system) &&
|
677
728
|
(options.load_system || rakefile.nil?) &&
|
678
729
|
system_dir && File.directory?(system_dir)
|
679
730
|
print_rakefile_directory(location)
|
@@ -687,7 +738,7 @@ module Rake
|
|
687
738
|
Dir.chdir(location)
|
688
739
|
print_rakefile_directory(location)
|
689
740
|
Rake.load_rakefile(File.expand_path(@rakefile)) if
|
690
|
-
@rakefile && @rakefile !=
|
741
|
+
@rakefile && @rakefile != ""
|
691
742
|
options.rakelib.each do |rlib|
|
692
743
|
glob("#{rlib}/*.rake") do |name|
|
693
744
|
add_import name
|
@@ -698,7 +749,7 @@ module Rake
|
|
698
749
|
end
|
699
750
|
|
700
751
|
def glob(path, &block) # :nodoc:
|
701
|
-
FileList.glob(path.
|
752
|
+
FileList.glob(path.tr("\\", "/")).each(&block)
|
702
753
|
end
|
703
754
|
private :glob
|
704
755
|
|
@@ -706,8 +757,8 @@ module Rake
|
|
706
757
|
def system_dir # :nodoc:
|
707
758
|
@system_dir ||=
|
708
759
|
begin
|
709
|
-
if ENV[
|
710
|
-
ENV[
|
760
|
+
if ENV["RAKE_SYSTEM"]
|
761
|
+
ENV["RAKE_SYSTEM"]
|
711
762
|
else
|
712
763
|
standard_system_dir
|
713
764
|
end
|
@@ -721,7 +772,7 @@ module Rake
|
|
721
772
|
end
|
722
773
|
else
|
723
774
|
def standard_system_dir #:nodoc:
|
724
|
-
File.join(File.expand_path(
|
775
|
+
File.join(File.expand_path("~"), ".rake")
|
725
776
|
end
|
726
777
|
end
|
727
778
|
private :standard_system_dir
|
@@ -780,11 +831,31 @@ module Rake
|
|
780
831
|
re = /^#{@rakefile}$/
|
781
832
|
re = /#{re.source}/i if windows?
|
782
833
|
|
783
|
-
backtrace.find { |str| str =~ re } ||
|
834
|
+
backtrace.find { |str| str =~ re } || ""
|
835
|
+
end
|
836
|
+
|
837
|
+
def set_default_options # :nodoc:
|
838
|
+
options.always_multitask = false
|
839
|
+
options.backtrace = false
|
840
|
+
options.build_all = false
|
841
|
+
options.dryrun = false
|
842
|
+
options.ignore_deprecate = false
|
843
|
+
options.ignore_system = false
|
844
|
+
options.job_stats = false
|
845
|
+
options.load_system = false
|
846
|
+
options.nosearch = false
|
847
|
+
options.rakelib = %w[rakelib]
|
848
|
+
options.show_all_tasks = false
|
849
|
+
options.show_prereqs = false
|
850
|
+
options.show_task_pattern = nil
|
851
|
+
options.show_tasks = nil
|
852
|
+
options.silent = false
|
853
|
+
options.suppress_backtrace_pattern = nil
|
854
|
+
options.thread_pool_size = Rake.suggested_thread_count
|
855
|
+
options.trace = false
|
856
|
+
options.trace_output = $stderr
|
857
|
+
options.trace_rules = false
|
784
858
|
end
|
785
859
|
|
786
|
-
private
|
787
|
-
FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc:
|
788
|
-
|
789
860
|
end
|
790
861
|
end
|
data/lib/rake/backtrace.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Rake
|
2
3
|
module Backtrace # :nodoc: all
|
3
4
|
SYS_KEYS = RbConfig::CONFIG.keys.grep(/(?:[a-z]prefix|libdir)\z/)
|
@@ -5,12 +6,13 @@ module Rake
|
|
5
6
|
[ File.join(File.dirname(__FILE__), "..") ]
|
6
7
|
|
7
8
|
SUPPRESSED_PATHS = SYS_PATHS.
|
8
|
-
map { |s| s.
|
9
|
+
map { |s| s.tr("\\", "/") }.
|
9
10
|
map { |f| File.expand_path(f) }.
|
10
11
|
reject { |s| s.nil? || s =~ /^ *$/ }
|
11
12
|
SUPPRESSED_PATHS_RE = SUPPRESSED_PATHS.map { |f| Regexp.quote(f) }.join("|")
|
13
|
+
SUPPRESSED_PATHS_RE << "|^<internal:\\w+>"
|
12
14
|
SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if
|
13
|
-
Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE ==
|
15
|
+
Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby"
|
14
16
|
|
15
17
|
SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i
|
16
18
|
|
data/lib/rake/clean.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and
|
2
3
|
# two rake tasks (:clean and :clobber).
|
3
4
|
#
|
@@ -11,7 +12,7 @@
|
|
11
12
|
# The intent of this task is to return a project to its
|
12
13
|
# pristine, just unpacked state.
|
13
14
|
|
14
|
-
require
|
15
|
+
require "rake"
|
15
16
|
|
16
17
|
# :stopdoc:
|
17
18
|
|
@@ -27,9 +28,10 @@ module Rake
|
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
|
-
def cleanup(file_name, opts
|
31
|
+
def cleanup(file_name, **opts)
|
31
32
|
begin
|
32
|
-
|
33
|
+
opts = { verbose: Rake.application.options.trace }.merge(opts)
|
34
|
+
rm_r file_name, **opts
|
33
35
|
rescue StandardError => ex
|
34
36
|
puts "Failed to remove #{file_name}: #{ex}" unless file_already_gone?(file_name)
|
35
37
|
end
|
@@ -60,7 +62,7 @@ end
|
|
60
62
|
|
61
63
|
CLEAN = ::Rake::FileList["**/*~", "**/*.bak", "**/core"]
|
62
64
|
CLEAN.clear_exclude.exclude { |fn|
|
63
|
-
fn.pathmap("%f").downcase ==
|
65
|
+
fn.pathmap("%f").downcase == "core" && File.directory?(fn)
|
64
66
|
}
|
65
67
|
|
66
68
|
desc "Remove any temporary products."
|
@@ -71,6 +73,6 @@ end
|
|
71
73
|
CLOBBER = ::Rake::FileList.new
|
72
74
|
|
73
75
|
desc "Remove any generated files."
|
74
|
-
task :
|
76
|
+
task clobber: [:clean] do
|
75
77
|
Rake::Cleaner.cleanup_files(CLOBBER)
|
76
78
|
end
|
data/lib/rake/cloneable.rb
CHANGED