rake 10.5.0 → 13.0.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.
Files changed (170) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/macos.yml +22 -0
  3. data/.github/workflows/ubuntu-rvm.yml +28 -0
  4. data/.github/workflows/ubuntu.yml +20 -0
  5. data/.github/workflows/windows.yml +20 -0
  6. data/CONTRIBUTING.rdoc +13 -8
  7. data/Gemfile +10 -0
  8. data/History.rdoc +1997 -288
  9. data/README.rdoc +27 -11
  10. data/Rakefile +25 -65
  11. data/bin/bundle +105 -0
  12. data/bin/console +7 -0
  13. data/bin/rake +20 -24
  14. data/bin/rdoc +29 -0
  15. data/bin/rubocop +29 -0
  16. data/bin/setup +6 -0
  17. data/doc/jamis.rb +1 -0
  18. data/doc/rake.1 +139 -124
  19. data/doc/rakefile.rdoc +2 -4
  20. data/exe/rake +27 -0
  21. data/lib/rake/application.rb +124 -90
  22. data/lib/rake/backtrace.rb +3 -2
  23. data/lib/rake/clean.rb +7 -5
  24. data/lib/rake/cloneable.rb +1 -0
  25. data/lib/rake/cpu_counter.rb +10 -28
  26. data/lib/rake/default_loader.rb +1 -0
  27. data/lib/rake/dsl_definition.rb +5 -11
  28. data/lib/rake/early_time.rb +1 -0
  29. data/lib/rake/ext/core.rb +1 -0
  30. data/lib/rake/ext/string.rb +22 -21
  31. data/lib/rake/file_creation_task.rb +4 -3
  32. data/lib/rake/file_list.rb +34 -27
  33. data/lib/rake/file_task.rb +12 -4
  34. data/lib/rake/file_utils.rb +38 -32
  35. data/lib/rake/file_utils_ext.rb +8 -18
  36. data/lib/rake/invocation_chain.rb +1 -0
  37. data/lib/rake/invocation_exception_mixin.rb +1 -0
  38. data/lib/rake/late_time.rb +2 -1
  39. data/lib/rake/linked_list.rb +24 -15
  40. data/lib/rake/loaders/makefile.rb +5 -4
  41. data/lib/rake/multi_task.rb +2 -1
  42. data/lib/rake/name_space.rb +1 -1
  43. data/lib/rake/packagetask.rb +40 -17
  44. data/lib/rake/phony.rb +2 -1
  45. data/lib/rake/private_reader.rb +1 -0
  46. data/lib/rake/promise.rb +13 -12
  47. data/lib/rake/pseudo_status.rb +1 -0
  48. data/lib/rake/rake_module.rb +30 -1
  49. data/lib/rake/rake_test_loader.rb +18 -13
  50. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  51. data/lib/rake/scope.rb +3 -2
  52. data/lib/rake/task.rb +82 -31
  53. data/lib/rake/task_argument_error.rb +1 -0
  54. data/lib/rake/task_arguments.rb +15 -4
  55. data/lib/rake/task_manager.rb +54 -30
  56. data/lib/rake/tasklib.rb +2 -14
  57. data/lib/rake/testtask.rb +39 -28
  58. data/lib/rake/thread_history_display.rb +4 -3
  59. data/lib/rake/thread_pool.rb +16 -17
  60. data/lib/rake/trace_output.rb +2 -1
  61. data/lib/rake/version.rb +4 -1
  62. data/lib/rake/win32.rb +10 -15
  63. data/lib/rake.rb +35 -43
  64. data/rake.gemspec +43 -0
  65. metadata +33 -216
  66. data/.autotest +0 -7
  67. data/.rubocop.yml +0 -27
  68. data/.togglerc +0 -7
  69. data/Manifest.txt +0 -166
  70. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  71. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  72. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  73. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  74. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  75. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  76. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  77. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  78. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  79. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  80. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  81. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  82. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  83. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  84. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  85. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  86. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  87. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  88. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  89. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  90. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  91. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  92. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  93. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  94. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  95. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  96. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  97. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  98. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  99. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  100. data/lib/rake/alt_system.rb +0 -110
  101. data/lib/rake/contrib/.document +0 -1
  102. data/lib/rake/contrib/compositepublisher.rb +0 -21
  103. data/lib/rake/contrib/ftptools.rb +0 -137
  104. data/lib/rake/contrib/publisher.rb +0 -81
  105. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  106. data/lib/rake/contrib/sshpublisher.rb +0 -61
  107. data/lib/rake/contrib/sys.rb +0 -4
  108. data/lib/rake/ext/module.rb +0 -2
  109. data/lib/rake/ext/pathname.rb +0 -25
  110. data/lib/rake/ext/time.rb +0 -18
  111. data/lib/rake/gempackagetask.rb +0 -4
  112. data/lib/rake/pathmap.rb +0 -3
  113. data/lib/rake/rdoctask.rb +0 -4
  114. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  115. data/lib/rake/runtest.rb +0 -27
  116. data/rakelib/publish.rake +0 -20
  117. data/rakelib/test_times.rake +0 -25
  118. data/test/file_creation.rb +0 -34
  119. data/test/helper.rb +0 -129
  120. data/test/support/rakefile_definitions.rb +0 -478
  121. data/test/support/ruby_runner.rb +0 -34
  122. data/test/test_private_reader.rb +0 -42
  123. data/test/test_rake.rb +0 -40
  124. data/test/test_rake_application.rb +0 -643
  125. data/test/test_rake_application_options.rb +0 -468
  126. data/test/test_rake_backtrace.rb +0 -119
  127. data/test/test_rake_clean.rb +0 -61
  128. data/test/test_rake_cpu_counter.rb +0 -68
  129. data/test/test_rake_definitions.rb +0 -84
  130. data/test/test_rake_directory_task.rb +0 -76
  131. data/test/test_rake_dsl.rb +0 -40
  132. data/test/test_rake_early_time.rb +0 -31
  133. data/test/test_rake_extension.rb +0 -59
  134. data/test/test_rake_file_creation_task.rb +0 -56
  135. data/test/test_rake_file_list.rb +0 -670
  136. data/test/test_rake_file_list_path_map.rb +0 -8
  137. data/test/test_rake_file_task.rb +0 -197
  138. data/test/test_rake_file_utils.rb +0 -314
  139. data/test/test_rake_ftp_file.rb +0 -74
  140. data/test/test_rake_functional.rb +0 -482
  141. data/test/test_rake_invocation_chain.rb +0 -64
  142. data/test/test_rake_late_time.rb +0 -18
  143. data/test/test_rake_linked_list.rb +0 -84
  144. data/test/test_rake_makefile_loader.rb +0 -46
  145. data/test/test_rake_multi_task.rb +0 -64
  146. data/test/test_rake_name_space.rb +0 -57
  147. data/test/test_rake_package_task.rb +0 -79
  148. data/test/test_rake_path_map.rb +0 -168
  149. data/test/test_rake_path_map_explode.rb +0 -34
  150. data/test/test_rake_path_map_partial.rb +0 -18
  151. data/test/test_rake_pathname_extensions.rb +0 -15
  152. data/test/test_rake_pseudo_status.rb +0 -21
  153. data/test/test_rake_rake_test_loader.rb +0 -20
  154. data/test/test_rake_reduce_compat.rb +0 -26
  155. data/test/test_rake_require.rb +0 -40
  156. data/test/test_rake_rules.rb +0 -388
  157. data/test/test_rake_scope.rb +0 -44
  158. data/test/test_rake_task.rb +0 -393
  159. data/test/test_rake_task_argument_parsing.rb +0 -119
  160. data/test/test_rake_task_arguments.rb +0 -127
  161. data/test/test_rake_task_lib.rb +0 -9
  162. data/test/test_rake_task_manager.rb +0 -178
  163. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  164. data/test/test_rake_task_with_arguments.rb +0 -172
  165. data/test/test_rake_test_task.rb +0 -146
  166. data/test/test_rake_thread_pool.rb +0 -145
  167. data/test/test_rake_top_level_functions.rb +0 -71
  168. data/test/test_rake_win32.rb +0 -72
  169. data/test/test_thread_history_display.rb +0 -101
  170. data/test/test_trace_output.rb +0 -52
@@ -1,12 +1,12 @@
1
- require 'shellwords'
2
- require 'optparse'
1
+ # frozen_string_literal: true
2
+ require "optparse"
3
3
 
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'
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
- 'rakefile',
40
- 'Rakefile',
41
- 'rakefile.rb',
42
- 'Rakefile.rb'
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 = 'rake'
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('rb', DefaultLoader.new)
58
- add_loader('rf', DefaultLoader.new)
59
- add_loader('rake', DefaultLoader.new)
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['RAKE_COLUMNS'].to_i
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,19 +76,24 @@ 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='rake')
88
+ def init(app_name="rake", argv = ARGV)
84
89
  standard_exception_handling do
85
90
  @name = app_name
86
- args = handle_options
91
+ begin
92
+ args = handle_options argv
93
+ rescue ArgumentError
94
+ # Backward compatibility for capistrano
95
+ args = handle_options
96
+ end
87
97
  collect_command_line_tasks(args)
88
98
  end
89
99
  end
@@ -162,7 +172,7 @@ module Rake
162
172
  args = []
163
173
 
164
174
  begin
165
- /((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
175
+ /\s*((?:[^\\,]|\\.)*?)\s*(?:,\s*(.*))?$/ =~ remaining_args
166
176
 
167
177
  remaining_args = $2
168
178
  args << $1.gsub(/\\(.)/, '\1')
@@ -202,13 +212,22 @@ module Rake
202
212
  end
203
213
 
204
214
  def display_exception_details(ex) # :nodoc:
205
- seen = Thread.current[:rake_display_exception_details_seen] ||= []
206
- return if seen.include? ex
207
- seen << ex
215
+ display_exception_details_seen << ex
208
216
 
209
217
  display_exception_message_details(ex)
210
218
  display_exception_backtrace(ex)
211
- display_exception_details(ex.cause) if has_cause?(ex)
219
+ display_cause_details(ex.cause) if has_cause?(ex)
220
+ end
221
+
222
+ def display_cause_details(ex) # :nodoc:
223
+ return if display_exception_details_seen.include? ex
224
+
225
+ trace "\nCaused by:"
226
+ display_exception_details(ex)
227
+ end
228
+
229
+ def display_exception_details_seen # :nodoc:
230
+ Thread.current[:rake_display_exception_details_seen] ||= []
212
231
  end
213
232
 
214
233
  def has_cause?(ex) # :nodoc:
@@ -257,7 +276,7 @@ module Rake
257
276
  if File.exist?(fn)
258
277
  others = FileList.glob(fn, File::FNM_CASEFOLD)
259
278
  return others.size == 1 ? others.first : fn
260
- elsif fn == ''
279
+ elsif fn == ""
261
280
  return fn
262
281
  end
263
282
  end
@@ -269,11 +288,6 @@ module Rake
269
288
  @tty_output
270
289
  end
271
290
 
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
291
  # We will truncate output if we are outputting to a TTY or if we've been
278
292
  # given an explicit column width to honor
279
293
  def truncate_output? # :nodoc:
@@ -345,7 +359,7 @@ module Rake
345
359
  end
346
360
 
347
361
  def unix? # :nodoc:
348
- RbConfig::CONFIG['host_os'] =~
362
+ RbConfig::CONFIG["host_os"] =~
349
363
  /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i
350
364
  end
351
365
 
@@ -378,7 +392,7 @@ module Rake
378
392
 
379
393
  def sort_options(options) # :nodoc:
380
394
  options.sort_by { |opt|
381
- opt.select { |o| o =~ /^-/ }.map { |o| o.downcase }.sort.reverse
395
+ opt.select { |o| o.is_a?(String) && o =~ /^-/ }.map(&:downcase).sort.reverse
382
396
  }
383
397
  end
384
398
  private :sort_options
@@ -388,38 +402,38 @@ module Rake
388
402
  def standard_rake_options # :nodoc:
389
403
  sort_options(
390
404
  [
391
- ['--all', '-A',
405
+ ["--all", "-A",
392
406
  "Show all tasks, even uncommented ones (in combination with -T or -D)",
393
407
  lambda { |value|
394
408
  options.show_all_tasks = value
395
409
  }
396
410
  ],
397
- ['--backtrace=[OUT]',
411
+ ["--backtrace=[OUT]",
398
412
  "Enable full backtrace. OUT can be stderr (default) or stdout.",
399
413
  lambda { |value|
400
414
  options.backtrace = true
401
- select_trace_output(options, 'backtrace', value)
415
+ select_trace_output(options, "backtrace", value)
402
416
  }
403
417
  ],
404
- ['--build-all', '-B',
418
+ ["--build-all", "-B",
405
419
  "Build all prerequisites, including those which are up-to-date.",
406
420
  lambda { |value|
407
421
  options.build_all = true
408
422
  }
409
423
  ],
410
- ['--comments',
424
+ ["--comments",
411
425
  "Show commented tasks only",
412
426
  lambda { |value|
413
427
  options.show_all_tasks = !value
414
428
  }
415
429
  ],
416
- ['--describe', '-D [PATTERN]',
430
+ ["--describe", "-D [PATTERN]",
417
431
  "Describe the tasks (matching optional PATTERN), then exit.",
418
432
  lambda { |value|
419
433
  select_tasks_to_show(options, :describe, value)
420
434
  }
421
435
  ],
422
- ['--dry-run', '-n',
436
+ ["--dry-run", "-n",
423
437
  "Do a dry run without executing actions.",
424
438
  lambda { |value|
425
439
  Rake.verbose(true)
@@ -428,31 +442,31 @@ module Rake
428
442
  options.trace = true
429
443
  }
430
444
  ],
431
- ['--execute', '-e CODE',
445
+ ["--execute", "-e CODE",
432
446
  "Execute some Ruby code and exit.",
433
447
  lambda { |value|
434
448
  eval(value)
435
449
  exit
436
450
  }
437
451
  ],
438
- ['--execute-print', '-p CODE',
452
+ ["--execute-print", "-p CODE",
439
453
  "Execute some Ruby code, print the result, then exit.",
440
454
  lambda { |value|
441
455
  puts eval(value)
442
456
  exit
443
457
  }
444
458
  ],
445
- ['--execute-continue', '-E CODE',
459
+ ["--execute-continue", "-E CODE",
446
460
  "Execute some Ruby code, " +
447
461
  "then continue with normal task processing.",
448
462
  lambda { |value| eval(value) }
449
463
  ],
450
- ['--jobs', '-j [NUMBER]',
464
+ ["--jobs", "-j [NUMBER]",
451
465
  "Specifies the maximum number of tasks to execute in parallel. " +
452
466
  "(default is number of CPU cores + 4)",
453
467
  lambda { |value|
454
- if value.nil? || value == ''
455
- value = FIXNUM_MAX
468
+ if value.nil? || value == ""
469
+ value = Float::INFINITY
456
470
  elsif value =~ /^\d+$/
457
471
  value = value.to_i
458
472
  else
@@ -462,7 +476,7 @@ module Rake
462
476
  options.thread_pool_size = value - 1
463
477
  }
464
478
  ],
465
- ['--job-stats [LEVEL]',
479
+ ["--job-stats [LEVEL]",
466
480
  "Display job statistics. " +
467
481
  "LEVEL=history displays a complete job list",
468
482
  lambda { |value|
@@ -473,42 +487,42 @@ module Rake
473
487
  end
474
488
  }
475
489
  ],
476
- ['--libdir', '-I LIBDIR',
490
+ ["--libdir", "-I LIBDIR",
477
491
  "Include LIBDIR in the search path for required modules.",
478
492
  lambda { |value| $:.push(value) }
479
493
  ],
480
- ['--multitask', '-m',
494
+ ["--multitask", "-m",
481
495
  "Treat all tasks as multitasks.",
482
496
  lambda { |value| options.always_multitask = true }
483
497
  ],
484
- ['--no-search', '--nosearch',
485
- '-N', "Do not search parent directories for the Rakefile.",
498
+ ["--no-search", "--nosearch",
499
+ "-N", "Do not search parent directories for the Rakefile.",
486
500
  lambda { |value| options.nosearch = true }
487
501
  ],
488
- ['--prereqs', '-P',
502
+ ["--prereqs", "-P",
489
503
  "Display the tasks and dependencies, then exit.",
490
504
  lambda { |value| options.show_prereqs = true }
491
505
  ],
492
- ['--quiet', '-q',
506
+ ["--quiet", "-q",
493
507
  "Do not log messages to standard output.",
494
508
  lambda { |value| Rake.verbose(false) }
495
509
  ],
496
- ['--rakefile', '-f [FILENAME]',
510
+ ["--rakefile", "-f [FILENAME]",
497
511
  "Use FILENAME as the rakefile to search for.",
498
512
  lambda { |value|
499
- value ||= ''
513
+ value ||= ""
500
514
  @rakefiles.clear
501
515
  @rakefiles << value
502
516
  }
503
517
  ],
504
- ['--rakelibdir', '--rakelib', '-R RAKELIBDIR',
518
+ ["--rakelibdir", "--rakelib", "-R RAKELIBDIR",
505
519
  "Auto-import any .rake files in RAKELIBDIR. " +
506
520
  "(default is 'rakelib')",
507
521
  lambda { |value|
508
522
  options.rakelib = value.split(File::PATH_SEPARATOR)
509
523
  }
510
524
  ],
511
- ['--require', '-r MODULE',
525
+ ["--require", "-r MODULE",
512
526
  "Require MODULE before executing rakefile.",
513
527
  lambda { |value|
514
528
  begin
@@ -522,11 +536,11 @@ module Rake
522
536
  end
523
537
  }
524
538
  ],
525
- ['--rules',
539
+ ["--rules",
526
540
  "Trace the rules resolution.",
527
541
  lambda { |value| options.trace_rules = true }
528
542
  ],
529
- ['--silent', '-s',
543
+ ["--silent", "-s",
530
544
  "Like --quiet, but also suppresses the " +
531
545
  "'in directory' announcement.",
532
546
  lambda { |value|
@@ -534,59 +548,60 @@ module Rake
534
548
  options.silent = true
535
549
  }
536
550
  ],
537
- ['--suppress-backtrace PATTERN',
551
+ ["--suppress-backtrace PATTERN",
538
552
  "Suppress backtrace lines matching regexp PATTERN. " +
539
553
  "Ignored if --trace is on.",
540
554
  lambda { |value|
541
555
  options.suppress_backtrace_pattern = Regexp.new(value)
542
556
  }
543
557
  ],
544
- ['--system', '-g',
558
+ ["--system", "-g",
545
559
  "Using system wide (global) rakefiles " +
546
560
  "(usually '~/.rake/*.rake').",
547
561
  lambda { |value| options.load_system = true }
548
562
  ],
549
- ['--no-system', '--nosystem', '-G',
563
+ ["--no-system", "--nosystem", "-G",
550
564
  "Use standard project Rakefile search paths, " +
551
565
  "ignore system wide rakefiles.",
552
566
  lambda { |value| options.ignore_system = true }
553
567
  ],
554
- ['--tasks', '-T [PATTERN]',
568
+ ["--tasks", "-T [PATTERN]",
555
569
  "Display the tasks (matching optional PATTERN) " +
556
- "with descriptions, then exit.",
570
+ "with descriptions, then exit. " +
571
+ "-AT combination displays all of tasks contained no description.",
557
572
  lambda { |value|
558
573
  select_tasks_to_show(options, :tasks, value)
559
574
  }
560
575
  ],
561
- ['--trace=[OUT]', '-t',
576
+ ["--trace=[OUT]", "-t",
562
577
  "Turn on invoke/execute tracing, enable full backtrace. " +
563
578
  "OUT can be stderr (default) or stdout.",
564
579
  lambda { |value|
565
580
  options.trace = true
566
581
  options.backtrace = true
567
- select_trace_output(options, 'trace', value)
582
+ select_trace_output(options, "trace", value)
568
583
  Rake.verbose(true)
569
584
  }
570
585
  ],
571
- ['--verbose', '-v',
586
+ ["--verbose", "-v",
572
587
  "Log message to standard output.",
573
588
  lambda { |value| Rake.verbose(true) }
574
589
  ],
575
- ['--version', '-V',
590
+ ["--version", "-V",
576
591
  "Display the program version.",
577
592
  lambda { |value|
578
- puts "rake, version #{RAKEVERSION}"
593
+ puts "rake, version #{Rake::VERSION}"
579
594
  exit
580
595
  }
581
596
  ],
582
- ['--where', '-W [PATTERN]',
597
+ ["--where", "-W [PATTERN]",
583
598
  "Describe the tasks (matching optional PATTERN), then exit.",
584
599
  lambda { |value|
585
600
  select_tasks_to_show(options, :lines, value)
586
601
  options.show_all_tasks = true
587
602
  }
588
603
  ],
589
- ['--no-deprecation-warnings', '-X',
604
+ ["--no-deprecation-warnings", "-X",
590
605
  "Disable the deprecation warnings.",
591
606
  lambda { |value|
592
607
  options.ignore_deprecate = true
@@ -597,7 +612,7 @@ module Rake
597
612
 
598
613
  def select_tasks_to_show(options, show_tasks, value) # :nodoc:
599
614
  options.show_tasks = show_tasks
600
- options.show_task_pattern = Regexp.new(value || '')
615
+ options.show_task_pattern = Regexp.new(value || "")
601
616
  Rake::TaskManager.record_task_metadata = true
602
617
  end
603
618
  private :select_tasks_to_show
@@ -605,9 +620,9 @@ module Rake
605
620
  def select_trace_output(options, trace_option, value) # :nodoc:
606
621
  value = value.strip unless value.nil?
607
622
  case value
608
- when 'stdout'
623
+ when "stdout"
609
624
  options.trace_output = $stdout
610
- when 'stderr', nil
625
+ when "stderr", nil
611
626
  options.trace_output = $stderr
612
627
  else
613
628
  fail CommandLineOptionError,
@@ -619,9 +634,8 @@ module Rake
619
634
  # Read and handle the command line options. Returns the command line
620
635
  # arguments that we didn't understand, which should (in theory) be just
621
636
  # task names and env vars.
622
- def handle_options # :nodoc:
623
- options.rakelib = ['rakelib']
624
- options.trace_output = $stderr
637
+ def handle_options(argv) # :nodoc:
638
+ set_default_options
625
639
 
626
640
  OptionParser.new do |opts|
627
641
  opts.banner = "#{Rake.application.name} [-f rakefile] {options} targets..."
@@ -634,8 +648,8 @@ module Rake
634
648
  end
635
649
 
636
650
  standard_rake_options.each { |args| opts.on(*args) }
637
- opts.environment('RAKEOPT')
638
- end.parse(ARGV)
651
+ opts.environment("RAKEOPT")
652
+ end.parse(argv)
639
653
  end
640
654
 
641
655
  # Similar to the regular Ruby +require+ command, but will check
@@ -673,7 +687,7 @@ module Rake
673
687
 
674
688
  def raw_load_rakefile # :nodoc:
675
689
  rakefile, location = find_rakefile_location
676
- if (! options.ignore_system) &&
690
+ if (!options.ignore_system) &&
677
691
  (options.load_system || rakefile.nil?) &&
678
692
  system_dir && File.directory?(system_dir)
679
693
  print_rakefile_directory(location)
@@ -687,7 +701,7 @@ module Rake
687
701
  Dir.chdir(location)
688
702
  print_rakefile_directory(location)
689
703
  Rake.load_rakefile(File.expand_path(@rakefile)) if
690
- @rakefile && @rakefile != ''
704
+ @rakefile && @rakefile != ""
691
705
  options.rakelib.each do |rlib|
692
706
  glob("#{rlib}/*.rake") do |name|
693
707
  add_import name
@@ -698,7 +712,7 @@ module Rake
698
712
  end
699
713
 
700
714
  def glob(path, &block) # :nodoc:
701
- FileList.glob(path.gsub("\\", '/')).each(&block)
715
+ FileList.glob(path.tr("\\", "/")).each(&block)
702
716
  end
703
717
  private :glob
704
718
 
@@ -706,8 +720,8 @@ module Rake
706
720
  def system_dir # :nodoc:
707
721
  @system_dir ||=
708
722
  begin
709
- if ENV['RAKE_SYSTEM']
710
- ENV['RAKE_SYSTEM']
723
+ if ENV["RAKE_SYSTEM"]
724
+ ENV["RAKE_SYSTEM"]
711
725
  else
712
726
  standard_system_dir
713
727
  end
@@ -721,7 +735,7 @@ module Rake
721
735
  end
722
736
  else
723
737
  def standard_system_dir #:nodoc:
724
- File.join(File.expand_path('~'), '.rake')
738
+ File.join(File.expand_path("~"), ".rake")
725
739
  end
726
740
  end
727
741
  private :standard_system_dir
@@ -780,11 +794,31 @@ module Rake
780
794
  re = /^#{@rakefile}$/
781
795
  re = /#{re.source}/i if windows?
782
796
 
783
- backtrace.find { |str| str =~ re } || ''
797
+ backtrace.find { |str| str =~ re } || ""
798
+ end
799
+
800
+ def set_default_options # :nodoc:
801
+ options.always_multitask = false
802
+ options.backtrace = false
803
+ options.build_all = false
804
+ options.dryrun = false
805
+ options.ignore_deprecate = false
806
+ options.ignore_system = false
807
+ options.job_stats = false
808
+ options.load_system = false
809
+ options.nosearch = false
810
+ options.rakelib = %w[rakelib]
811
+ options.show_all_tasks = false
812
+ options.show_prereqs = false
813
+ options.show_task_pattern = nil
814
+ options.show_tasks = nil
815
+ options.silent = false
816
+ options.suppress_backtrace_pattern = nil
817
+ options.thread_pool_size = Rake.suggested_thread_count
818
+ options.trace = false
819
+ options.trace_output = $stderr
820
+ options.trace_rules = false
784
821
  end
785
822
 
786
- private
787
- FIXNUM_MAX = (2**(0.size * 8 - 2) - 1) # :nodoc:
788
-
789
823
  end
790
824
  end
@@ -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,12 @@ module Rake
5
6
  [ File.join(File.dirname(__FILE__), "..") ]
6
7
 
7
8
  SUPPRESSED_PATHS = SYS_PATHS.
8
- map { |s| s.gsub("\\", "/") }.
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("|")
12
13
  SUPPRESSED_PATHS_RE << "|^org\\/jruby\\/\\w+\\.java" if
13
- Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
14
+ Object.const_defined?(:RUBY_ENGINE) and RUBY_ENGINE == "jruby"
14
15
 
15
16
  SUPPRESS_PATTERN = %r!(\A(#{SUPPRESSED_PATHS_RE})|bin/rake:\d+)!i
16
17
 
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 'rake'
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
- rm_r file_name, opts
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 == 'core' && File.directory?(fn)
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 :clobber => [:clean] do
76
+ task clobber: [:clean] do
75
77
  Rake::Cleaner.cleanup_files(CLOBBER)
76
78
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
  ##
3
4
  # Mixin for creating easily cloned objects.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # Based on a script at:
@@ -14,7 +15,7 @@ module Rake
14
15
  end
15
16
 
16
17
  begin
17
- require 'etc'
18
+ require "etc"
18
19
  rescue LoadError
19
20
  else
20
21
  if Etc.respond_to?(:nprocessors)
@@ -30,31 +31,22 @@ unless Rake::CpuCounter.method_defined?(:count)
30
31
  Rake::CpuCounter.class_eval <<-'end;', __FILE__, __LINE__+1
31
32
  require 'rbconfig'
32
33
 
33
- # TODO: replace with IO.popen using array-style arguments in Rake 11
34
- require 'open3'
35
-
36
34
  def count
37
- if defined?(Java::Java)
35
+ if RUBY_PLATFORM == 'java'
38
36
  count_via_java_runtime
39
37
  else
40
38
  case RbConfig::CONFIG['host_os']
41
- when /darwin9/
42
- count_via_hwprefs_cpu_count
43
- when /darwin/
44
- count_via_hwprefs_thread_count || count_via_sysctl
45
39
  when /linux/
46
40
  count_via_cpuinfo
47
- when /bsd/
41
+ when /darwin|bsd/
48
42
  count_via_sysctl
49
43
  when /mswin|mingw/
50
44
  count_via_win32
51
45
  else
52
46
  # Try everything
53
47
  count_via_win32 ||
54
- count_via_sysctl ||
55
- count_via_hwprefs_thread_count ||
56
- count_via_hwprefs_cpu_count ||
57
- count_via_cpuinfo
48
+ count_via_sysctl ||
49
+ count_via_cpuinfo
58
50
  end
59
51
  end
60
52
  end
@@ -80,14 +72,6 @@ unless Rake::CpuCounter.method_defined?(:count)
80
72
  nil
81
73
  end
82
74
 
83
- def count_via_hwprefs_thread_count
84
- run 'hwprefs', 'thread_count'
85
- end
86
-
87
- def count_via_hwprefs_cpu_count
88
- run 'hwprefs', 'cpu_count'
89
- end
90
-
91
75
  def count_via_sysctl
92
76
  run 'sysctl', '-n', 'hw.ncpu'
93
77
  end
@@ -95,10 +79,8 @@ unless Rake::CpuCounter.method_defined?(:count)
95
79
  def run(command, *args)
96
80
  cmd = resolve_command(command)
97
81
  if cmd
98
- Open3.popen3 cmd, *args do |inn, out, err,|
99
- inn.close
100
- err.read
101
- out.read.to_i
82
+ IO.popen [cmd, *args] do |io|
83
+ io.read.to_i
102
84
  end
103
85
  else
104
86
  nil
@@ -117,8 +99,8 @@ unless Rake::CpuCounter.method_defined?(:count)
117
99
  end
118
100
 
119
101
  def in_path_command(command)
120
- Open3.popen3 'which', command do |_, out,|
121
- out.eof? ? nil : command
102
+ IO.popen ['which', command] do |io|
103
+ io.eof? ? nil : command
122
104
  end
123
105
  end
124
106
  end;