rake 10.5.0 → 13.2.1
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.
- 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